Giới thiệu về dự án

Dự án tạo ra cơ sở dữ liệu về dược liệu phục vụ cho quá trình giảng dậy và nghiên cứu. Tầm nhìn dự án tạo ra hệ thống phân tích sâu hơn về dược dân tộc học hướng tới tìm kiếm các hoạt chất tiềm năng làm thuốc. Các bước chuẩn bị gồm có: - Chuẩn hóa dữ liệu - Phân tích dữ liệu Chuẩn hóa dữ liệu sẽ được update tới website để nhân phản hồi của cộng đồng.

Chuẩn hóa dữ liệu

Các hàm cấn thiết dành cho hầu hết các chương trình chạy

# Hàm để chuyển đổi dòng DataFrame thành nội dung Markdown
def convert_row_to_markdown(row, columns):
    markdown_content = ""
    for col in columns:
        markdown_content += f"### {col}\n{row[col]}\n\n"
    return markdown_content
def get_first_words(text):
    parts = text.split(' ')
    if len(parts) >= 2:
        return ' '.join(parts[:2])
    return text  # Trả về chuỗi gốc nếu có ít hơn 2 từ
def sanitize_filename(name):
    # Thay thế các ký tự không hợp lệ bằng dấu gạch dưới
    return "".join(c if c.isalnum() or c in " ._-" else "_" for c in name)

câu hình folder

import os
root = "docs"
folder_markdocs="Markdocs"
Database= "Database"
folder_GIBF = "GIBF_database"
GIBF_database_dir = os.path.join(root, Database, folder_GIBF)
if not os.path.exists(GIBF_database_dir):
    os.makedirs(GIBF_database_dir)
folder_lotus = "Lotus_database"
lotus_database_dir = os.path.join(root, Database, folder_lotus)
if not os.path.exists(lotus_database_dir):
    os.makedirs(lotus_database_dir)
folder_WIKI = "WIKI_database"
WIKI_database_dir = os.path.join(root, Database, folder_WIKI)
if not os.path.exists(WIKI_database_dir):
    os.makedirs(WIKI_database_dir)
project_DL= "Dược liệu"
markdocs_DL_dir = os.path.join(root, folder_markdocs, project_DL)
if not os.path.exists(markdocs_DL_dir):
    os.makedirs(markdocs_DL_dir)

project_DDT = "Dược dân tộc"
markdocs_DTH_dir = os.path.join(root, folder_markdocs, project_DDT)
if not os.path.exists(markdocs_DTH_dir):
    os.makedirs(markdocs_DTH_dir)

Các nguồn dữ liệu đầu vào sẵn có

Đầu tiền là bộ cơ sở dữ liệu tự xây dựng được lưu dưới dạng sqlite. Bộ dữ liệu của dr Duke về dược dân tộc học.

# Bộ dữ liệu tự xây dựng từ SQLITE
# Bộ dữ liệu do các bạn sinh viên phối hợp thực hiện
import sqlite3
import pandas as pd

# Kết nối đến cơ sở dữ liệu SQLite
conn = sqlite3.connect('db.sqlite3')
cursor = conn.cursor()
# danh sách các bảng trong sqlit3
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") 
tables = cursor.fetchall()
# Truy vấn dữ liệu từ bảng
cursor.execute("SELECT * FROM CSDLHM_loaithucvat")
rows = cursor.fetchall()

# Lấy tên các cột
column_names = [description[0] for description in cursor.description]
# Chuyển đổi dữ liệu thành DataFrame
df_CDSL_Loai = pd.DataFrame(rows, columns=column_names).dropna(subset=['Tên_Loài_Tiếng_Việt'])
# Truy vấn dữ liệu từ bảng
cursor.execute("SELECT * FROM CSDLHM_herbalmedicine")
rows = cursor.fetchall()
# Lấy tên các cột
column_names = [description[0] for description in cursor.description]
# Chuyển đổi dữ liệu thành DataFrame
df_CSDLHM_herbalmedicine = pd.DataFrame(rows, columns=column_names).dropna(subset=['Dược_liệu_Tiếng_Việt'])
df_CSDLHM_herbalmedicine = df_CSDLHM_herbalmedicine.apply(lambda x: x.str.strip() if x.dtype == "object" else x)
df_CSDLHM_herbalmedicine['Dược_liệu_Tiếng_Latin_Kiểu_DĐVN'] = df_CSDLHM_herbalmedicine['Dược_liệu_Tiếng_Latin_Kiểu_DĐVN'].str.lower().str.replace(r'\s{2,}', ' ', regex=True).str.strip()
df_CSDL_SV = pd.read_excel('Duoc lieu.xlsx')
df_CSDL_SV = df_CSDL_SV.apply(lambda x: x.str.strip() if x.dtype == "object" else x)
df_CSDL_SV['Tên khoa học của Dược liệu'] = df_CSDL_SV['Tên khoa học của Dược liệu'].str.lower().str.replace(r'\s{2,}', ' ', regex=True).str.strip()
df_CSDL_SV['Tên tiếng việt dược liệu'] = df_CSDL_SV['Tên tiếng việt dược liệu'].str.lower().str.replace(r'\s{2,}', ' ', regex=True).str.strip().str.title()
name0=df_CSDLHM_herbalmedicine.columns[6]
name0
name1= df_CSDL_SV.columns[3]
df_CSDL_SV.rename(columns={name1: name0}, inplace=True)
# Sử dụng merge với how='outer'
df_CSDLHM = pd.merge(df_CSDLHM_herbalmedicine, df_CSDL_SV, on=[name0], how='right')

df_CSDLHM = df_CSDLHM.dropna(subset=['Tên khoa học của Thực vật trong dược điển Việt Nam V'])
df_CSDLHM['Tên khoa học của Thực vật trong dược điển Việt Nam V'] = df_CSDLHM['Tên khoa học của Thực vật trong dược điển Việt Nam V'].apply(get_first_words)
df_CSDLHM['Loài thay thế 1'] = df_CSDLHM['Loài thay thế 1'].fillna('').apply(get_first_words)
df_CSDLHM['Loài thay thế 2'] = df_CSDLHM['Loài thay thế 2'].fillna('').apply(get_first_words)
df_CSDLHM['Loài thay thế 3'] = df_CSDLHM['Loài thay thế 3'].fillna('').apply(get_first_words)
def filter_alternative_species(row): 
    return [value for value in [row['Tên khoa học của Thực vật trong dược điển Việt Nam V'], row['Loài thay thế 1'], row['Loài thay thế 2'], row['Loài thay thế 3']] if pd.notnull(value) and str(value).strip()] 
df_CSDLHM.loc[:,'list_species'] = df_CSDLHM.apply(filter_alternative_species, axis=1)
len(df_CSDLHM)
273

Dịch thuật activatiy tiếng anh sang tiếng Việt. Không cần chạy lại

import pandas as pd
from deep_translator import GoogleTranslator
from requests.exceptions import ConnectTimeout
import os

file_path_activity = "E:\\Database\\0-DataNaturalProduct\\dr-dukes-phytochemical-and-ethnobotanical-databases-All-2023-02-13_0033\\Duke-Source-CSV\\ACTIVITIES.csv"
try:
    df_Activity = pd.read_csv(file_path_activity, encoding='utf-8')
except ValueError:
    df_Activity = pd.read_csv(file_path_activity, encoding='latin1')

# Tạo một đối tượng GoogleTranslator
translator = GoogleTranslator(source='auto', target='vi')

def safe_translate(text, dest='vi'):
    for _ in range(3):  # Thử lại tối đa 3 lần
        try:
            translation = translator.translate(text)
            return translation
        except ConnectTimeout:
            print("Kết nối bị timeout, thử lại...")
    return "N/A"  # Trả về "N/A" nếu tất cả các lần thử đều thất bại

# Dịch cột 'ACTIVITY' sang tiếng Việt và lưu vào cột mới 'ACTIVITY_VI'
df_Activity['ACTIVITY_VI'] = df_Activity['ACTIVITY'].apply(lambda x: safe_translate(x))

# Lưu DataFrame đã dịch vào tệp CSV
root = "docs"
Database = "Database"
GIBF_database_dir = os.path.join(root, Database)

df_Activity_save_csv = os.path.join(GIBF_database_dir, "Activity_translate_vi.csv")
if not os.path.exists(GIBF_database_dir):
    os.makedirs(GIBF_database_dir)
df_Activity.to_csv(df_Activity_save_csv, index=False, encoding='utf-8-sig')

print(f"DataFrame đã được lưu vào tệp {df_Activity_save_csv}")
# bộ dữ liệu của dr DUKE
import pandas as pd

# Đường dẫn tới tệp CSV
file_path_entha = "E:\\Database\\0-DataNaturalProduct\\dr-dukes-phytochemical-and-ethnobotanical-databases-All-2023-02-13_0033\\Duke-Source-CSV\\ETHNOBOT.csv"
df_Activity_save_csv = os.path.join(root, Database,"Activity_translate_vi.csv")
try:
    df_Entha = pd.read_csv(file_path_entha, encoding='utf-8')
except ValueError:
    df_Entha = pd.read_csv(file_path_entha, encoding='latin1')
try:
    df_Activity = pd.read_csv(df_Activity_save_csv, encoding='utf-8')
except ValueError:
    df_Activity = pd.read_csv(df_Activity_save_csv, encoding='latin1')



df_Entha = pd.merge(df_Entha, df_Activity, on="ACTIVITY", how = "inner", suffixes=('_df1', '_df2'))
# Nhóm dữ liệu theo các cột 'GENUS', 'SPECIES', 'FAMILY', 'COUNTRY' và tính gộp (aggregate) các cột khác
df_Entha_group = df_Entha.groupby(['GENUS', 'SPECIES', 'FAMILY', 'COUNTRY']).agg({
    'ACTIVITY': list,
    'DEFINITION': list, 
    'ACTIVITY_VI': list
}).reset_index()
# Biến đổi các giá trị trong cột 'ACTIVITY' và 'DEFINITION_df1' từ dạng danh sách sang dạng chuỗi
df_Entha_group['ACTIVITY'] = df_Entha_group['ACTIVITY'].apply(lambda x: ', '.join(map(str, x)))
df_Entha_group['ACTIVITY_VI'] = df_Entha_group['ACTIVITY_VI'].apply(lambda x: ', '.join(map(str, x)))
df_Entha_group['DEFINITION'] = df_Entha_group['DEFINITION'].apply(lambda x: ', '.join(map(str, x)))
df_Entha_group['Country_Enth']= df_Entha_group['COUNTRY']  + ": "+ df_Entha_group['ACTIVITY_VI']
df_Entha_group = df_Entha_group.groupby(['GENUS', 'SPECIES', 'FAMILY']).agg({
    'Country_Enth': list,
    'COUNTRY': set,
    'DEFINITION': set,
    'ACTIVITY_VI': set
}).reset_index()
df_Entha_group['Sciences_Name']= df_Entha_group["GENUS"] + ' ' + df_Entha_group['SPECIES']
# Một số lệnh đảm bảo dữ liệu đạt yêu cầu để tải và lưu file 
import os
import pandas as pd
from translate import Translator
from tabulate import tabulate
def remove_invalid_chars(input_string):
    invalid_chars = "!@#$%^&*()_+-=[]{}|;:'\",.<>?/\\`~"
    translation_table = str.maketrans('', '', invalid_chars)
    return input_string.translate(translation_table)
df_Entha_group['Sciences_Name'] = df_Entha_group['Sciences_Name'].apply(remove_invalid_chars)
df_Entha_group.head(10)
GENUS SPECIES FAMILY Country_Enth COUNTRY DEFINITION ACTIVITY_VI Sciences_Name
0 Aaragus adscendens Liliaceae [Elsewhere: Chất làm lạnh, Làm dịu, India: Thu... {Iran, Elsewhere, India} {Diaphoretic, Stimulant, Aphrodisiac, Tonic, R... {Đổ mồ hôi, Chất kích thích, Chất làm lạnh, Là... Aaragus adscendens
1 Aaragus filicinus Liliaceae [Elsewhere: Chất làm se, Thuốc bổ] {Elsewhere} {Astringent, Tonic} {Chất làm se, Thuốc bổ} Aaragus filicinus
2 Aaragus lucidum Liliaceae [China: Thuốc an thần, Thuốc bổ] {China} {Sedative, Tonic} {Thuốc an thần, Thuốc bổ} Aaragus lucidum
3 Aaragus lucidus Liliaceae [China: Thuốc lợi tiểu, Thuốc long đờm, Thuốc ... {China, Italian} {Diuretic, Diuretic, Expectorant, Expectorant,... {Thuốc lợi tiểu, Thuốc long đờm, Thuốc long đờ... Aaragus lucidus
4 Aaragus officinalis Liliaceae [China: Thuốc lợi tiểu, Thuốc diệt ký sinh trù... {France, China, Elsewhere, Venezuela, Turkey, ... {Cardiac, Diuretic, Diuretic, Diuretic, Diuret... {Thuốc lợi tiểu, Thuốc diệt ký sinh trùng, Thu... Aaragus officinalis
5 Aaragus racemosus Liliaceae [Elsewhere: Làm dịu, Thuốc lợi tiểu, Thuốc bổ,... {Iran, Sudan, Elsewhere, India} {Demulcent, Diuretic, Tonic, Demulcent, Demulc... {Làm dịu, Thuốc lợi tiểu, Làm dịu, Thuốc lợi t... Aaragus racemosus
6 Aaragus recemosus Liliaceae [Elsewhere: Thuốc lợi tiểu] {Elsewhere} {Diuretic} {Thuốc lợi tiểu} Aaragus recemosus
7 Aaragus sarmentosus Liliaceae [Elsewhere: Thuốc kích thích tình dục] {Elsewhere} {Aphrodisiac} {Thuốc kích thích tình dục} Aaragus sarmentosus
8 Aaragus stipularis Liliaceae [Egypt: Đổ mồ hôi] {Egypt} {Diaphoretic} {Đổ mồ hôi} Aaragus stipularis
9 Abelmoschus esculentus Malvaceae [China: Làm dịu, Làm dịu, Thuốc lợi tiểu, Else... {China, Elsewhere, Venezuela, Haiti, Iraq, Pan... {Demulcent, Demulcent, Diuretic, Diuretic, Emo... {Thuốc giải độc, Làm dịu, Làm dịu, Chất làm mề... Abelmoschus esculentus

Các hàm tạo cơ sở dữ liệu

Cần thiết phải tải được dữ liệu về từ các nguồn cơ bản gồm - Dữ liệu về phân loại thực vật: GIBF, WIKIDATA - Dữ liệu thành phần hóa học: LOTUS

# Một số hàm cũ để phát triển ban đầu. Có thể được xóa sau khi đảm bảo kết quả thu được
import os
import requests
import pandas as pd
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem.Draw import DrawingOptions
import yaml
from pygbif import species
import requests
import json
from jsonpath_ng import jsonpath, parse
import io
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem import AllChem
import folium
from rdkit.Chem.Draw import rdMolDraw2D, rdDepictor
from rdkit.Chem.Draw import IPythonConsole
from IPython.display import SVG
from rdkit import rdBase
import base64
from io import BytesIO
from pygbif import species as species
from pygbif import occurrences as occ
from pygbif import maps
from mpl_toolkits.basemap import Basemap
from collections import defaultdict
import geopandas as gpd 
import folium
import matplotlib.pyplot as plt
import requests
from rdkit import Chem
from rdkit.Chem import Draw

import os
import requests
from rdkit import Chem
from rdkit.Chem import Draw
import os
import pandas as pd
from PIL import Image



# Hàm để tạo cấu trúc hóa học và lưu hình ảnh
import os
import requests
import pandas as pd
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem.Draw import DrawingOptions
from rdkit.Chem import AllChem
from rdkit.Chem import PandasTools
import os
import requests
import pandas as pd
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem.Draw import DrawingOptions
from rdkit.Chem import PandasTools

#Tải dữ liệu từ lotus database dựa trên tên loài
import os
import json
import requests
import pandas as pd

def download_compound_isolation(query, path):
    query = remove_invalid_chars(query)
    # Tạo đường dẫn tới API LOTUS
    url = f"https://lotus.naturalproducts.net/api/search/simple?query={query}"
    
    # Gửi yêu cầu và nhận kết quả dưới dạng JSON
    response = requests.get(url).json()
    
    # Chuyển đổi danh sách thành DataFrame
    compounds_df = pd.DataFrame(response['naturalProducts'])
    
    # Kiểm tra cột 'smiles' có tồn tại và không phải là None
    if 'smiles' in compounds_df.columns and compounds_df['smiles'].notnull().all():
        # Tạo thư mục nếu chưa tồn tại
        if not os.path.exists(path):
            os.makedirs(path)
        
        # Định nghĩa tên file
        filename = os.path.join(path, f"{query}.json")
        
        # Lưu dữ liệu JSON vào file
        with open(filename, 'w', encoding='utf-8') as file:
            json.dump(response, file, ensure_ascii=False, indent=4)
        
        print(f"Data for query '{query}' has been saved to '{filename}'")
    else:
        print("Column 'smiles' is missing or contains None values")
    return


if not os.path.exists(lotus_database_dir):
    os.makedirs(lotus_database_dir)

# Tạo một tập hợp (set) để lưu tên các tệp (không bao gồm đuôi)
file_names_Lotus_database = set()

# Duyệt qua các tệp trong thư mục
for name in os.listdir(lotus_database_dir):
    file_path = os.path.join(lotus_database_dir, name)
    if os.path.isfile(file_path) and name.endswith('.json'):
        # Lấy tên tệp mà không bao gồm đuôi
        file_name = os.path.splitext(name)[0]
        file_names_Lotus_database.add(file_name)

# Hiển thị kết quả


SPECIES_SET = set(df_Entha_group["Sciences_Name"])
filtered_species_set = sorted(SPECIES_SET - file_names_Lotus_database) # tạo folder dược dân tộc học
filtered_df_Entha_group_lotus = df_Entha_group.loc[df_Entha_group['Sciences_Name'].isin(filtered_species_set)]
print('Số lượng đã tải xong từ lotus:', len(file_names_Lotus_database))
print('Số lượng cần chạy tiếp:', len(filtered_species_set))
print('Số lượng loài cần chạy:', len(SPECIES_SET))
for _, row in filtered_df_Entha_group_lotus.iterrows(): 
    family, genus, species = row['FAMILY'], row['GENUS'], str(row['GENUS'] + " " + row['SPECIES'])
    download_compound_isolation(species, lotus_database_dir)
### Tải dữ liệu từ GIBF
import os
import json
import pandas as pd
from pygbif import species as species
from pygbif import occurrences as occ
import requests

def get_gibf_with_images(query, path,not_found_log):
    query = remove_invalid_chars(query)
    try:
        spec = species.name_backbone(query)
    except KeyError:
        print(f"Không tìm thấy dữ liệu cho {query}")
        with open(not_found_log, 'a', encoding='utf-8') as f: 
            f.write(f"{query}\n")
        return {}, "Không có kết quả phù hợp", "Không có ghi nhận ở Việt Nam", []

    occ_global = "Không có kết quả phù hợp"
    stateProvince_in_VN = "Không có ghi nhận ở Việt Nam"
    link_image = []

    if 'usageKey' in spec:
        # Tạo thư mục nếu chưa tồn tại
        if not os.path.exists(path):
            os.makedirs(path)
        
        # Định nghĩa tên file
        filename = os.path.join(path, f"{query}.json")
        
        # Lưu dữ liệu JSON vào file
        with open(filename, 'w', encoding='utf-8') as file:
            json.dump(spec, file, ensure_ascii=False, indent=4)
        
        print(f"Dữ liệu cho truy vấn '{query}' đã được lưu vào '{filename}'")

        # Tìm kiếm các ghi nhận
        occ_search = occ.search(taxonKey=spec['usageKey'])
        occ_df = pd.DataFrame(occ_search['results'])

        # Kiểm tra sự tồn tại của cột 'country'
        if 'country' in occ_df.columns:
            # Phân bố trên thế giới
            occ_global = ", ".join(str(country) for country in set(occ_df['country']) if country)

            # Kiểm tra sự tồn tại của cột 'stateProvince'
            if 'stateProvince' in occ_df.columns:
                # Phân bố tại Việt Nam
                filtered_df = occ_df[occ_df['country'] == 'Viet Nam']
                filtered_df['stateProvince'] = filtered_df['stateProvince'].fillna('')
                stateProvince_in_VN = ", ".join(str(state) for state in set(filtered_df['stateProvince']) if state)
                if not stateProvince_in_VN:
                    stateProvince_in_VN = "Không có ghi nhận ở Việt Nam"
            else:
                print(f"Cột 'stateProvince' không tồn tại trong kết quả truy vấn cho {query}")
        else:
            print(f"Cột 'country' không tồn tại trong kết quả truy vấn cho {query}")

        # Lấy danh sách hình ảnh
        img_path = f"https://api.gbif.org/v1/occurrence/search?taxonKey={spec['usageKey']}&mediaType=StillImage&limit=5"
        response = requests.get(img_path).json()
        for result in response.get('results', []):
            for media in result.get('media', []):
                if 'identifier' in media:
                    link_image.append(media['identifier'])

        # Cập nhật nội dung JSON với thông tin mới
        json_content = {
            "spec": spec,
            "occ_global": occ_global,
            "stateProvince_in_VN": stateProvince_in_VN,
            "link_image": link_image
        }
        with open(filename, 'w', encoding='utf-8') as file:
            json.dump(json_content, file, ensure_ascii=False, indent=4)
    else:
        print(f"Không tìm thấy usageKey cho truy vấn {query}")

    return spec, occ_global, stateProvince_in_VN, link_image


not_found_log_gibf = os.path.join(GIBF_database_dir, 'not_found_gibf.csv')
# Tạo thư mục nếu chưa tồn tại
if not os.path.exists(GIBF_database_dir):
    os.makedirs(GIBF_database_dir)

# Tạo một tập hợp (set) để lưu tên các tệp (không bao gồm đuôi)
file_names_GIBF_database = set()

# Duyệt qua các tệp trong thư mục
for name in os.listdir(GIBF_database_dir):
    file_path = os.path.join(GIBF_database_dir, name)
    if os.path.isfile(file_path) and name.endswith('.json'):
        # Lấy tên tệp mà không bao gồm đuôi
        file_name = os.path.splitext(name)[0]
        file_names_GIBF_database.add(file_name)

# Hiển thị kết quả
print('Danh sách tệp đã có trong thư mục:', file_names_GIBF_database)

# Giả sử df_Entha_group đã được khởi tạo và chứa dữ liệu
df_Entha_group['Sciences_Name'] = df_Entha_group["GENUS"] + ' ' + df_Entha_group['SPECIES']
SPECIES_SET = set(df_Entha_group["Sciences_Name"])
filtered_species_set = sorted(SPECIES_SET - file_names_GIBF_database)

filtered_df_Entha_group_gibf = df_Entha_group.loc[df_Entha_group['Sciences_Name'].isin(filtered_species_set)]
print('Số lượng đã tải xong từ GIBF:', len(file_names_GIBF_database))
print('Số lượng cần chạy tiếp:', len(filtered_species_set))
print('Số lượng loài cần chạy:', len(SPECIES_SET))

for _, row in filtered_df_Entha_group_gibf.iterrows():
    family, genus, spe = row['FAMILY'], row['GENUS'], str(row['GENUS'] + " " + row['SPECIES'])
    get_gibf_with_images(spe, GIBF_database_dir, not_found_log_gibf)
# Tải dữ liệu từ WIKIDATA
from SPARQLWrapper import SPARQLWrapper, JSON
import json
import os

def download_wikidata_for_species(species_name, path):
    species_name = remove_invalid_chars(species_name)

    """
    Truy vấn thông tin từ Wikidata về một loài thực vật dựa trên tên khoa học của loài và lưu kết quả dưới dạng tệp JSON.

    Args:
        species_name (str): Tên khoa học của loài thực vật.
        path (str): Đường dẫn thư mục để lưu tệp JSON.

    Returns:
        None
    """
    # Thiết lập endpoint SPARQL
    sparql = SPARQLWrapper("https://query.wikidata.org/sparql")

    # Truy vấn SPARQL để lấy thông tin về loài thực vật với nhãn tiếng Việt và tiếng Anh
    query = f"""
    SELECT ?item ?itemLabel ?itemLabel_vi ?itemLabel_en ?scientific_name 
           (GROUP_CONCAT(DISTINCT ?description_vi; separator=", ") AS ?descriptions_vi) 
           (GROUP_CONCAT(DISTINCT ?description_en; separator=", ") AS ?descriptions_en) 
           (GROUP_CONCAT(DISTINCT ?also_known_as_vi; separator=", ") AS ?also_known_as_vis) 
           (GROUP_CONCAT(DISTINCT ?also_known_as_en; separator=", ") AS ?also_known_as_ens) 
           ?taxonRank ?parentTaxon ?distribution ?image
    WHERE {{
      ?item wdt:P31 wd:Q16521;  # Chỉ định loài thực vật
            wdt:P225 "{species_name}".  # Tên khoa học của loài thực vật
      OPTIONAL {{ ?item wdt:P225 ?scientific_name. }}
      OPTIONAL {{ ?item schema:description ?description_vi. FILTER(LANG(?description_vi) = "vi") }}  # Mô tả bằng tiếng Việt
      OPTIONAL {{ ?item schema:description ?description_en. FILTER(LANG(?description_en) = "en") }}  # Mô tả bằng tiếng Anh
      OPTIONAL {{ ?item skos:altLabel ?also_known_as_vi. FILTER(LANG(?also_known_as_vi) = "vi") }}  # Tên khác bằng tiếng Việt
      OPTIONAL {{ ?item skos:altLabel ?also_known_as_en. FILTER(LANG(?also_known_as_en) = "en") }}  # Tên khác bằng tiếng Anh
      OPTIONAL {{ ?item wdt:P105 ?taxonRank. }}  # Hạng phân loại
      OPTIONAL {{ ?item wdt:P171 ?parentTaxon. }}  # Phân loại cha mẹ
      OPTIONAL {{ ?item wdt:P183 ?distribution. }}  # Phân bố địa lý
      OPTIONAL {{ ?item wdt:P18 ?image. }}  # Hình ảnh
      SERVICE wikibase:label {{ bd:serviceParam wikibase:language "[AUTO_LANGUAGE],vi,en". }}
    }}
    GROUP BY ?item ?itemLabel ?itemLabel_vi ?itemLabel_en ?scientific_name ?taxonRank ?parentTaxon ?distribution ?image
    """

    sparql.setQuery(query)
    sparql.setReturnFormat(JSON)
    results = sparql.query().convert()

    # Chuyển kết quả truy vấn thành danh sách từ điển
    data = []
    for result in results["results"]["bindings"]:
        item = result["item"]["value"]
        itemLabel_vi = result.get("itemLabel_vi", {}).get("value", "N/A")
        itemLabel_en = result.get("itemLabel_en", {}).get("value", "N/A")
        scientific_name = result.get("scientific_name", {}).get("value", "N/A")
        descriptions_vi = result.get("descriptions_vi", {}).get("value", "N/A")
        descriptions_en = result.get("descriptions_en", {}).get("value", "N/A")
        also_known_as_vis = result.get("also_known_as_vis", {}).get("value", "N/A").split(", ")
        also_known_as_ens = result.get("also_known_as_ens", {}).get("value", "N/A").split(", ")
        taxonRank = result.get("taxonRank", {}).get("value", "N/A")
        parentTaxon = result.get("parentTaxon", {}).get("value", "N/A")
        distribution = result.get("distribution", {}).get("value", "N/A")
        image = result.get("image", {}).get("value", "N/A")
        
        # Kiểm tra và chuyển đổi URL ảnh
        if image != "N/A":
            image = image.replace("http://", "https://")  # Chuyển đổi URL thành HTTPS nếu cần

        data.append({
            "Item": item,
            "Label (VI)": itemLabel_vi,
            "Label (EN)": itemLabel_en,
            "Scientific Name": scientific_name,
            "Descriptions (VI)": descriptions_vi,
            "Descriptions (EN)": descriptions_en,
            "Also Known As (VI)": also_known_as_vis,
            "Also Known As (EN)": also_known_as_ens,
            "Taxon Rank": taxonRank,
            "Parent Taxon": parentTaxon,
            "Distribution": distribution,
            "Image": image
        })

    # Xác định đường dẫn đầy đủ để lưu tệp JSON
    output_file_path = os.path.join(path, f"{species_name.replace(' ', '_')}.json")

    # Lưu kết quả dưới dạng tệp JSON
    with open(output_file_path, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=4)

    print(f"Đã lưu kết quả vào {output_file_path}")



# Tạo thư mục nếu chưa tồn tại
if not os.path.exists(WIKI_database_dir):
    os.makedirs(WIKI_database_dir)

# Tạo một tập hợp (set) để lưu tên các tệp (không bao gồm đuôi)
file_names_WIKI_database = set()

# Duyệt qua các tệp trong thư mục
for name in os.listdir(WIKI_database_dir):
    file_path = os.path.join(WIKI_database_dir, name)
    if os.path.isfile(file_path) and name.endswith('.json'):
        # Lấy tên tệp mà không bao gồm đuôi
        file_name = os.path.splitext(name)[0]
        file_names_WIKI_database.add(file_name)

# Hiển thị kết quả
print('Danh sách tệp đã có trong thư mục:', file_names_WIKI_database)

# Giả sử df_Entha_group đã được khởi tạo và chứa dữ liệu
SPECIES_SET = set(df_Entha_group["Sciences_Name"])
filtered_df_Entha_group_gibf = df_Entha_group.loc[df_Entha_group['Sciences_Name'].isin(SPECIES_SET)]
print('Số lượng đã tải xong từ WIKI:', len(file_names_WIKI_database))
print('Số lượng cần chạy tiếp:', len(SPECIES_SET - file_names_WIKI_database))
print('Số lượng loài cần chạy:', len(SPECIES_SET))

# Tải dữ liệu
for _, row in filtered_df_Entha_group_gibf.iterrows():
    family, genus, spe = row['FAMILY'], row['GENUS'], f"{row['GENUS']} {row['SPECIES']}"
    download_wikidata_for_species(spe, WIKI_database_dir)

Xây dựng website về dược liệu

import os
from tabulate import tabulate


folder_names_duoc_lieu = set([name for name in os.listdir(markdocs_DL_dir) if os.path.isdir(os.path.join(markdocs_DL_dir, name))])
folder_names_duoc_dan_toc = set([name for name in os.listdir(markdocs_DTH_dir) if os.path.isdir(os.path.join(markdocs_DTH_dir, name))])
Name_file_compounds = [os.path.splitext(f)[0] for f in os.listdir(lotus_database_dir) if f.endswith('.json')]
Name_file_gibf = [os.path.splitext(f)[0] for f in os.listdir(GIBF_database_dir) if f.endswith('.json')]
Name_file_wikidata = [os.path.splitext(f)[0] for f in os.listdir(WIKI_database_dir) if f.endswith('.json')]

# Tạo DataFrame từ danh sách tên folder
TenDuocLieu_SET = set(df_CSDLHM["Tên tiếng việt dược liệu"]) # Dược liệu đã xong
filtered_TenDuocLieu_set = sorted(TenDuocLieu_SET - folder_names_duoc_lieu) # Dược liệu chưa xong

print('Số học còn lại:', len(filtered_TenDuocLieu_set))
first_two_elements = list(filtered_TenDuocLieu_set)
index_content = f""" 
!!! quote "Dược liệu là gì"
    
    - Dược liệu là nguyên liệu làm thuốc có nguồn gốc tự nhiên từ thực vật, động vật, khoáng vật và đạt tiêu chuẩn làm thuốc.

    <div style="text-align: right;"> Mục 5, điều 2, Luật dược 2016 </div>
    
    - Dược liệu (bao gồm cả vị thuốc cổ truyền) là nguyên liệu làm thuốc có nguồn gốc từ thực vật, động vật, khoáng vật, nấm và đạt tiêu chuẩn làm thuốc.
    
    <div style="text-align: right;"> Mục 5, điều 2, Luật số: 44/2024/QH15, LUẬT SỬA ĐỔI, BỔ SUNG MỘT SỐ ĐIỀU CỦA LUẬT DƯỢC </div>

<div class="grid cards" markdown>
"""
# Tạo nội dung cho update_index.yml
update_index = f"""
  - Dược liệu:
    - Dược liệu/index.md 
"""
finish_df_CSDLHM = df_CSDLHM[~df_CSDLHM["Tên tiếng việt dược liệu"].isin(first_two_elements)]

for idx, row in finish_df_CSDLHM.iterrows():
    folder_name = row["Tên tiếng việt dược liệu"]
    summary=row['Dựa tên thông tin thu thập được hãy viêt một đoạn tóm tắt ngắn về dược liệu']
    path_index = f"{project_DL}/{row['Tên tiếng việt dược liệu']}/{row['Tên tiếng việt dược liệu']}.md"
    index_content += f""" 
-   :material-leaf-circle-outline: __{row['Tên tiếng việt dược liệu']}__

    ---

    {summary}
    
    [{row['Tên tiếng việt dược liệu']}]({path_index})

"""
    
    update_index += f"    - {row['Tên tiếng việt dược liệu']}: {path_index}\n"


filtered_df_CSDLHM = df_CSDLHM[df_CSDLHM["Tên tiếng việt dược liệu"].isin(first_two_elements)]

for idx, row in filtered_df_CSDLHM.iterrows():
    folder_name = row["Tên tiếng việt dược liệu"]
    summary=row['Dựa tên thông tin thu thập được hãy viêt một đoạn tóm tắt ngắn về dược liệu']
    information_taxo=f"""
Dược liệu **{row["Tên tiếng việt dược liệu"]}** từ bộ phận **{row['Bộ_phận_dùng_Tiếng_Việt']}** từ loài *{row['Tên khoa học của Thực vật trong dược điển Việt Nam V']}*.

**Mô tả thực vật:** {row['Mô tả thực vật']}

*Tài liệu tham khảo:* {row['Mô tả thực vật bạn sử dụng tài liệu nào']} 
"""
    list_species=row["list_species"]
    string_list_species= ", ".join(list_species)
    # Đảm bảo đường dẫn tới thư mục hình ảnh và file Markdown
    species_dir = os.path.join(markdocs_DL_dir, folder_name)
    if not os.path.exists(species_dir):
        os.makedirs(species_dir)
    DDHK_path = os.path.join(species_dir, "DDHK")
    SoiBot_path = os.path.join(species_dir, "Soi_Bot")
    ViPhau_path = os.path.join(species_dir, "Vi_Phau")
    os.makedirs(DDHK_path, exist_ok=True)
    os.makedirs(SoiBot_path, exist_ok=True)
    os.makedirs(ViPhau_path, exist_ok=True)
    if len(list_species)==1:
        information_taxo+=f"Trong dược điển Việt nam, một loài được sử dụng làm dược liệu là *{row['Tên khoa học của Thực vật trong dược điển Việt Nam V']}*."
    else:
        information_taxo+=f"Trong dược điển Việt nam, một số loài có thể dùng thay thế cho nhau làm dược liệu bao gồm *{string_list_species}*"
    for Sci_name in list_species:
        if Sci_name not in Name_file_compounds:
            isolation_compound =f"Chưa có nghiên cứu về thành phần hóa học trên cơ sở Lotus"
        else:
            Sci_name = remove_invalid_chars(Sci_name)
            Name_json_file_lotus = f"{Sci_name}.json"
            path_file_json_compound_sci = os.path.join(lotus_database_dir, Name_json_file_lotus)
            if os.path.exists(path_file_json_compound_sci):
                with open(path_file_json_compound_sci, 'r', encoding='utf-8') as file:
                    data = json.load(file)   
                if 'naturalProducts' in data:
                    compounds_df = pd.DataFrame(data['naturalProducts'])
                    String_chemicalTaxonomyClassyfireClass = ""
                    String_Set_compount= ""
                    count_comp= 0
                    grouped_compound_markdown=""
                    if 'smiles' not in compounds_df.columns or compounds_df['smiles'].isnull().all():
                        isolation_compound= f"Hiện tại, chưa có thông tin về thành phần hóa học."
                    else:
                        compounds_df['Link_lotus'] = compounds_df.apply(lambda x: f"https://lotus.naturalproducts.net/compound/lotus_id/{x['lotus_id']}", axis=1)
                        compounds_df['name (code)'] = compounds_df.apply(lambda x: f"{x['traditional_name']} [({x['lotus_id']})]({x['Link_lotus']})", axis=1)
                        selected_columns_df = compounds_df.loc[:, ['lotus_id', 'traditional_name', 'synonyms','chemicalTaxonomyClassyfireClass', 'name (code)','smiles']]
                        Set_chemicalTaxonomyClassyfireClass=set(selected_columns_df['chemicalTaxonomyClassyfireClass'])
                        Set_chemicalTaxonomyClassyfireClass = {element for element in Set_chemicalTaxonomyClassyfireClass if element}
                        String_chemicalTaxonomyClassyfireClass = ', '.join(Set_chemicalTaxonomyClassyfireClass)
                        Set_compount=set(selected_columns_df['name (code)'])
                        Set_compount = {element for element in Set_compount if element}
                        String_Set_compount = ', '.join(Set_compount)
                        count_comp=len(selected_columns_df)
                        compounds_df['smiles_count'] = compounds_df['smiles'].apply(lambda x: len(x) if pd.notnull(x) else 0)
                        grouped_compounds_df = compounds_df.groupby('chemicalTaxonomyClassyfireClass').agg({ 'smiles': lambda x: list(x), 'traditional_name': list, 'lotus_id': list, 'smiles_count': 'sum', 'name (code)': list }).reset_index()
                        grouped_compounds_selected_columns = grouped_compounds_df.loc[:, ['chemicalTaxonomyClassyfireClass', 'smiles_count' ]]
                        grouped_compound_markdown=grouped_compounds_selected_columns.to_markdown(index=False) 
                        isolation_compound= f"""
**Thành phần hóa học từ loài **{Sci_name}**

Theo cơ sở dữ liệu lotus, loài *{Sci_name}* đã phân lập và xác định được **{count_comp}** hoạt chất thuộc về các nhóm {String_chemicalTaxonomyClassyfireClass} trong bảng dưới đây. Danh sách các hoạt chất như sau {String_Set_compount}. 
        
{grouped_compound_markdown}
"""
                        isolation_compound_chemical_images = []
                        for _, row1 in grouped_compounds_df.iterrows(): 
                            group = row1['chemicalTaxonomyClassyfireClass']
                            sanitized_group = sanitize_filename(group)
                            img_dir = os.path.join(markdocs_DL_dir, folder_name, Sci_name)
                            string_name_compound = ", ".join(row1['name (code)'])
                                
                            if not os.path.exists(img_dir):
                                os.makedirs(img_dir)
                                
                            smiles_list = row1['smiles']
                            chembl_mols = [Chem.MolFromSmiles(smiles) for smiles in smiles_list if smiles]
                            img_path = os.path.join(img_dir, f"{sanitized_group}.png")
                            img_path_in_mkdocs = os.path.join(Sci_name, f"{sanitized_group}.png").replace("\\", "/")
                            img = Draw.MolsToGridImage(chembl_mols, legends=row1['lotus_id'], molsPerRow=4)
                                
                            with open(img_path, 'wb') as f:
                                    f.write(img.data)
                                
                            isolation_compound_chemical_images.append(f"""
### Nhóm {group}
<figure markdown="span">
    ![{group}]({img_path_in_mkdocs}){{ width=100% }}
<figcaption>Hình ảnh cấu trúc hóa học của hoạt chất thuộc nhóm *{group}*. Tên thường gọi của các hoạt chất tương ứng là {string_name_compound}.</figcaption>
</figure>
""")

                            string_isolation_compound_chemical_images = '\n'.join(isolation_compound_chemical_images)
                            isolation_compound += f"""
            {string_isolation_compound_chemical_images}
            """
                else:
                    isolation_compound = "Hiện tại, chưa có thông tin về thành phần hóa học."
            else:
                isolation_compound = "Hiện tại, chưa có thông tin về thành phần hóa học."
                #### vẽ cấu trúc hóa học theo nhóm hoạt chất chemicalTaxonomyClassyfireClass, sau đó sẽ vẽ cấu trúc theo nhóm bằng rdkit, tạo caption cho từng nhóm

   

    # THÔNG TIN TRÊN GIBF
    
        if Sci_name not in Name_file_gibf:
            information_taxo += f""" 
Chưa có thông tin về loài này trên gibf
"""
        else:
            Name_json_file_gibf = f"{Sci_name}.json"
            path_file_json_gibf_sci = os.path.join(GIBF_database_dir, Name_json_file_gibf)
            if os.path.exists(path_file_json_gibf_sci):
                with open(path_file_json_gibf_sci, 'r', encoding='utf-8') as file:
                    data = json.load(file)        
            taxo_sci_name = data.get('spec', {}) 
            family = taxo_sci_name.get('family', 'N/A') 
            occ_global = data.get('occ_global', 'N/A')
            family = taxo_sci_name.get('family', 'N/A')
            stateProvince_in_VN = data.get('stateProvince_in_VN','N/A') 
            link_image = data.get('link_image','N/A')
            image_markdown = "\n".join([f'<img src="{link}" alt="Mô tả hình ảnh" width="100" height="100">' for link in link_image])
            information_taxo += f"""

!!! info "Phân loại thực vật của *{taxo_sci_name.get('species', 'N/A')}*"
    - **Kingdom:** {taxo_sci_name.get('kingdom', 'N/A')}
    - **Phylum:** {taxo_sci_name.get('phylum', 'N/A')}
    - **Order:** {taxo_sci_name.get('order', 'N/A')}
    - **Family:** {taxo_sci_name.get('family', 'N/A')}
    - **Genus:** {taxo_sci_name.get('genus', 'N/A')}
    - **Species:** *{taxo_sci_name.get('species', 'N/A')}*

{image_markdown}

**Phân bố trên thế giới:** {occ_global}

**Phân bố tại Việt nam:** {stateProvince_in_VN}

"""

    markdown_content = f"""---
title: {folder_name}
description: Dược liệu {folder_name} từ bộ phận {row['Bộ_phận_dùng_Tiếng_Việt']} từ loài *{row['Tên khoa học của Thực vật trong dược điển Việt Nam V']}*
date: 2024-12-01
categories:
  - {family}
tags:
  - {Sci_name}
  - {family}
---
!!! abstract "Tóm tắt"

    {row['Dựa tên thông tin thu thập được hãy viêt một đoạn tóm tắt ngắn về dược liệu']}

## Thông tin về thực vật

{information_taxo}

## Thông tin về dược liệu 

### Định danh

!!! info "Thông tin về tên gọi"

    - Dược liệu tiếng Việt: {row['Dược_liệu_Tiếng_Việt']}
    - Dược liệu tiếng Trung: {row['Dược_liệu_Tiếng_Trung_Ký_tự']} ({row['Dược_liệu_Tiếng_Trung_Phiên_âm']})
    - Dược liệu tiếng Anh: {row['Dược_liệu_Tiếng_Anh']}
    - Dược liệu latin thông dụng: {row['Dược_liệu_Tiếng_Latin']}
    - Dược liệu latin kiểu DĐVN: *{row['Dược_liệu_Tiếng_Latin_Kiểu_DĐVN']}*
    - Dược liệu latin kiểu DĐVN: *{row['Dược_liệu_Tiếng_Latin_Kiểu_DĐHK']}*
    - Dược liệu latin kiểu thông tư: *{row['Dược_liệu_Tiếng_Latin_Kiểu_Thông_Tư']}*
    - Bộ phận dùng: {row['Bộ_phận_dùng_Tiếng_Việt']} ({row['Bộ_phận_dùng_Tiếng_Anh']})

### Mô tả dược liệu 

- **Theo dược điển Việt nam V:** {row['Dược_liệu_Mô_tả_DĐVN']}

- **Mô tả dược liệu theo thông tư chế biến dược liệu theo phương pháp cổ truyền:** {row['Dược_liệu_Mô_tả_Thông_Tư']}

### Chế biến 

- **Chế biến theo dược điển việt nam V**: {row['Bộ_phận_dùng_Chế_Biến_DĐVN']}

- **Chế biến theo thông tư:** {row['Bộ_phận_dùng_Chế_Biến_Thông_Tư']}

--- 

## Thành phần hóa học

- Theo tài liệu của GS. Đỗ Tất Lợi:  {row['Thành phần hóa học']}
    
{isolation_compound}

---

## Tác dụng dược lý

Theo tài liệu {row['Mô tả thực vật bạn sử dụng tài liệu nào']}:{row['Tác dụng dược lý của Dược liệu']}

Theo tài liệu quốc tế: {row['Dược_Liệu_Tác_Dụng_Quốc_tế_Usage']}

---

## Dược điển Việt Nam V

### Soi bột:

{row['Dược_liệu_Soi_Bột_DĐVN']}

<!-- Hình ảnh soi bột sẽ được tự động chèn vào đây sau -->

### Vi phẫu:

{row['Dược_liệu_Vi_Phẫu_DĐVN']}

<!-- Hình ảnh vi phẫu sẽ được tự động chèn vào đây sau -->

### Định tính

{row['Dược_liệu_Định_Tính_DĐVN']}

### Định lượng

{row['Dược_liệu_Định_Lượng_DĐVN']}

### Thông tin khác 

- ** Độ ẩm: ** {row['Dược_liệu_Độ_ẩm_DĐVN']}
- ** Bảo quản:** {row['Dược_liệu_Bảo_Quản_DĐVN']}

## Dược điển Hồng kong

<!-- PDF sẽ được tự động chèn vào đây sau -->


---

## Y dược học cổ truyền

- **Tên vị thuốc:** {row['Tên_Vị_Thuốc']}
- **Tính vị quy kinh:** {row['Tính vị quy kinh']}
- **Công năng chủ trị:** {row['Công năng chủ trị']}
- **Chú ý:** {row['Dược_liệu_Chú_Ý_DĐVN']}
- **Kiêng kỵ:** {row['Dược_liệu_Kiêng_Kỵ_DĐVN']}

"""


    
# Lưu file content vào md file
    file_name = f"{row['Tên tiếng việt dược liệu']}.md"
    file_path = os.path.join(species_dir, file_name)
    with open(file_path, 'w', encoding='utf-8') as file:
        file.write(markdown_content)
    path_index = f"{project_DL}/{row['Tên tiếng việt dược liệu']}/{row['Tên tiếng việt dược liệu']}.md"
# thêm index_content vào file index.md
    index_content += f""" 
-   :material-leaf-circle-outline: __{row['Tên tiếng việt dược liệu']}__

    ---

    {summary}
    
    [{row['Tên tiếng việt dược liệu']}]({path_index})

"""
    
    update_index += f"    - {row['Tên tiếng việt dược liệu']}: {path_index}\n"

# Cập nhật mkdocs.yml



index_content += f"""

</div>
"""
    # Ghi nội dung vào index.md
with open(os.path.join(markdocs_DL_dir, f'index.md'), 'w', encoding='utf-8') as file:
    file.write(index_content)

    # Ghi nội dung vào update_index.yml
with open(os.path.join(markdocs_DL_dir, f'update_index.yml'), 'w', encoding='utf-8') as file:
    file.write(update_index)
     
Số học còn lại: 238
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(
c:\Users\Admin\miniconda3\envs\wagtail\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py:261: UserWarning: Truncating the list of molecules to be displayed to 50. Change the maxMols value to display more.
  warnings.warn(

Ethanopharmacology

Dược dân tộc học

Version 2 cho dược dân tộc học. Dùng google trans và rút ngắn thông tin xuống

Viết lại hàm get_chemical_structure_2 thành download_compound_isolation sao cho thu được nhiều thông tin hơn - Số lượng compound đã nghiên cứu được - Danh sách và tìm các hoạt chất giống nhau trong cùng một họ, một chi - Danh sách các hoạt chất khác nhau. Như vậy sẽ cần có list danh sách các hoạt chất Một họ sử dụng làm thuốc sẽ cần một số thông tin sau - Số lượng chi sử dụng làm thuốc - Các bệnh sử dụng làm thuốc trong mỗi chi - số lượng hoạt chất giống nhau trong mỗi chi. Cấu trúc hóa học. Số lượng hoạt chát trong mỗi chi. - Phân bố trên thế giới - Phân bố tại việt nam

Dược dân tộc phiên bản 3

Phiên bản hai vẫn chưa tải các dữ liệu về. Cần phải viết lại cho phù hợp. - Tải dữ liệu về lưu dưới dạng file json - Lọc dữ liệu theo Family, Genus, Species. - Phân tích về cấu trúc hóa học theo họ. - Phân tích tác dụng dược lý.

df_Entha_group.head(10)
GENUS SPECIES FAMILY Country_Enth COUNTRY DEFINITION ACTIVITY_VI Sciences_Name
0 Aaragus adscendens Liliaceae [Elsewhere: Chất làm lạnh, Làm dịu, India: Thu... {Iran, Elsewhere, India} {Diaphoretic, Stimulant, Aphrodisiac, Tonic, R... {Đổ mồ hôi, Chất kích thích, Chất làm lạnh, Là... Aaragus adscendens
1 Aaragus filicinus Liliaceae [Elsewhere: Chất làm se, Thuốc bổ] {Elsewhere} {Astringent, Tonic} {Chất làm se, Thuốc bổ} Aaragus filicinus
2 Aaragus lucidum Liliaceae [China: Thuốc an thần, Thuốc bổ] {China} {Sedative, Tonic} {Thuốc an thần, Thuốc bổ} Aaragus lucidum
3 Aaragus lucidus Liliaceae [China: Thuốc lợi tiểu, Thuốc long đờm, Thuốc ... {China, Italian} {Diuretic, Diuretic, Expectorant, Expectorant,... {Thuốc lợi tiểu, Thuốc long đờm, Thuốc long đờ... Aaragus lucidus
4 Aaragus officinalis Liliaceae [China: Thuốc lợi tiểu, Thuốc diệt ký sinh trù... {France, China, Elsewhere, Venezuela, Turkey, ... {Cardiac, Diuretic, Diuretic, Diuretic, Diuret... {Thuốc lợi tiểu, Thuốc diệt ký sinh trùng, Thu... Aaragus officinalis
5 Aaragus racemosus Liliaceae [Elsewhere: Làm dịu, Thuốc lợi tiểu, Thuốc bổ,... {Iran, Sudan, Elsewhere, India} {Demulcent, Diuretic, Tonic, Demulcent, Demulc... {Làm dịu, Thuốc lợi tiểu, Làm dịu, Thuốc lợi t... Aaragus racemosus
6 Aaragus recemosus Liliaceae [Elsewhere: Thuốc lợi tiểu] {Elsewhere} {Diuretic} {Thuốc lợi tiểu} Aaragus recemosus
7 Aaragus sarmentosus Liliaceae [Elsewhere: Thuốc kích thích tình dục] {Elsewhere} {Aphrodisiac} {Thuốc kích thích tình dục} Aaragus sarmentosus
8 Aaragus stipularis Liliaceae [Egypt: Đổ mồ hôi] {Egypt} {Diaphoretic} {Đổ mồ hôi} Aaragus stipularis
9 Abelmoschus esculentus Malvaceae [China: Làm dịu, Làm dịu, Thuốc lợi tiểu, Else... {China, Elsewhere, Venezuela, Haiti, Iraq, Pan... {Demulcent, Demulcent, Diuretic, Diuretic, Emo... {Thuốc giải độc, Làm dịu, Làm dịu, Chất làm mề... Abelmoschus esculentus
import pandas as pd
from rdkit.Chem import PandasTools
import os
import string
from googletrans import Translator
import networkx as nx 
import matplotlib.pyplot as plt
import requests
from rdkit.Chem import Draw
from rdkit.Chem.Draw import DrawingOptions
from rdkit.Chem import AllChem
from rdkit import Chem
from rdkit.Chem import rdFMCS, Draw
from rdkit.Chem.Draw import rdMolDraw2D

import os
from tabulate import tabulate

if not os.path.exists(markdocs_DTH_dir):
    os.makedirs(markdocs_DTH_dir)


folder_names_duoc_dan_toc = set([name for name in os.listdir(markdocs_DTH_dir) if os.path.isdir(os.path.join(markdocs_DTH_dir, name))])
Name_file_compounds = [os.path.splitext(f)[0] for f in os.listdir(lotus_database_dir) if f.endswith('.json')]

Name_file_gibf = [os.path.splitext(f)[0] for f in os.listdir(GIBF_database_dir) if f.endswith('.json')]
Name_file_wikidata = [os.path.splitext(f)[0] for f in os.listdir(WIKI_database_dir) if f.endswith('.json')]

# Tạo DataFrame từ danh sách tên folder
FAMILY_SET = set(df_Entha_group["FAMILY"])
filtered_family_set = sorted(FAMILY_SET - folder_names_duoc_dan_toc)

print('Số học còn lại:', len(filtered_family_set))
first_two_elements = list(filtered_family_set)
### Nội dung mở đầu cho file index.md và update_index.yml cho các họ đã chạy xong
update_index = f"""  
  - Dược dân tộc:
    - Dược dân tộc/index.md 
"""
index_content= f"""
!!! quote "Dược dân tộc học là gì"
    
    Dược dân tộc học (Ethnopharmacology) là thuật ngữ xuất hiện năm 1967 được hiểu là môn khoa học nghiên cứu về các nguyên liệu một nhóm dân tộc sử dụng như thuốc. Nghiên cứu thuốc cổ truyền, kinh nghiệm dân gian có thể hiểu là một phần dược dân tộc nhưng nếu đặt trong ví dụ về qua trình kinh nghiệm sử dụng một loài dược liệu xuất hiện và truyền miệng trong cộng đồng dù trước đó chưa được biết tới do giao thương văn hóa làm nổi bật sự khác biệt của dược dân tộc học. Dược dân tộc học thường đề cập tới thực vật bậc cao do đó đây là nhánh của thực vật dân tộc học - chuyên nghiên cứu về ứng dụng của một loài thực vật trong đời sống hàng ngày của cộng đồng đơn giản như cỏ tranh được sử dụng để lợp mái nhà, hoặc cây sơn để làm sơn mài. Một nghiên cứu dược dân tộc học yêu cầu tập hợp kiến thức các chuyên ngành khác nhau thường bắt đầu từ điều tra kinh nghiệm sử dụng nguyên liệu làm thuốc trong không gian cộng đồng và kết thúc là nghiên cứu cung cấp bằng chứng khoa học trong phòng thí nghiệm. Dược dân tộc học đóng vai trò quan trọng chỉ dẫn đối tượng nghiên cứu trong phát triển thuốc từ thảo mộc.    
    
<div class="grid cards" markdown> 
"""
for family in folder_names_duoc_dan_toc:
    filtered_df_Entha_group_family = df_Entha_group.loc[df_Entha_group['FAMILY'] == family]
    GENUS_SET = set(filtered_df_Entha_group_family["GENUS"]) # chuyển các chi thành set
    String_genus= ', '.join(GENUS_SET) # chuyển genus set thành string, mỗi phần tử cách nhau với dấu ,
    list_country_family = set()
    for countries in filtered_df_Entha_group_family["COUNTRY"]:
        if isinstance(countries, set):
            list_country_family.update(countries)
        else:
            list_country_family.add(countries)
    list_country_family = ', '.join(list_country_family)
    #### Danh sách các bệnh được sử dụng để chữa của các loài trong họ
    list_disease_family = set()
    for disease in filtered_df_Entha_group_family["ACTIVITY_VI"]:
        if isinstance(disease, set):
            list_disease_family.update(disease)
        else:
            list_disease_family.add(disease)
    list_disease_family = sorted(set(list_disease_family))
    list_disease_family = ', '.join(list_disease_family)

    summary = f'**Họ {family}** có **{len(GENUS_SET)}** chi được các cộng đồng sử dụng trong chăm sóc sức khỏe gồm *{String_genus}*. *Họ {family}* đã được một số công động tại các quốc gia như {list_country_family} đã phát hiện một số tác dụng trên lâm sàng gồm chữa bệnh lẫn độc tính như {list_disease_family}.'
    update_index += f"""    - {family}: Dược dân tộc/{family}/{family}.md\n"""
    
    index_content += f"""

-   :material-leaf-circle-outline: __{family}__
    
    ---
    
    {summary}
    
    [Họ {family}](Dược dân tộc/{family}/{family}.md)

"""

for family in first_two_elements:
    family_dir = os.path.join(markdocs_DTH_dir, family) # tạo folder cho family
    if not os.path.exists(family_dir):
        os.makedirs(family_dir)
    filtered_df_Entha_group_family = df_Entha_group.loc[df_Entha_group['FAMILY'] == family]
    GENUS_SET = set(filtered_df_Entha_group_family["GENUS"]) # chuyển các chi thành set
    String_genus= ', '.join(GENUS_SET) # chuyển genus set thành string, mỗi phần tử cách nhau với dấu ,
    ###### Xây dựng cây phả hạ 
    ###### Xây dựng cây phả hạ 
    Tree_life = [f">Họ {family}\n"]
    count_spec_in_genus = []
    for genus in GENUS_SET:
        Tree_life.append(f"\n>|-- Chi {genus}\n")
        filtered_df_Entha_group_genus = df_Entha_group.loc[df_Entha_group['GENUS'] == genus]
        count_spec_in_genus = f'{genus} ({len(filtered_df_Entha_group_genus)}) '
        for _, row in filtered_df_Entha_group_genus.iterrows():
            Tree_life.append(f">*{row['Sciences_Name']}*,")
    Tree_life_string = '\n'.join(Tree_life)
    Background_taxonomy = f'Trong *họ {family}* có **{len(GENUS_SET)}** chi được sử dụng làm thuốc với chi tiết số loài trong mỗi chi như sau {count_spec_in_genus}. Chi tiết về loài sử dụng làm thuốc như dưới đây.  '
    #### Xử lý thông tin về dân tộc học từ cơ sở dữ liệu

    tags_spec = "\n".join([f"  - {genus} {species}" for genus, species in zip(filtered_df_Entha_group_family["GENUS"], filtered_df_Entha_group_family["SPECIES"])])
    tags_genus = "\n".join([f"  - {genus}" for genus in set(filtered_df_Entha_group_family["GENUS"])])
    #### Danh sách các quốc gia sử dụng dược liệu để chữa bệnh, dịch sang tiếng việt với công cụ google transalte
    list_country_family = set()
    for countries in filtered_df_Entha_group_family["COUNTRY"]:
        if isinstance(countries, set):
            list_country_family.update(countries)
        else:
            list_country_family.add(countries)
    list_country_family = ', '.join(list_country_family)
    #### Danh sách các bệnh được sử dụng để chữa của các loài trong họ
    list_disease_family = set()
    for disease in filtered_df_Entha_group_family["ACTIVITY_VI"]:
        if isinstance(disease, set):
            list_disease_family.update(disease)
        else:
            list_disease_family.add(disease)
    list_disease_family = sorted(set(list_disease_family))
    list_disease_family = ', '.join(list_disease_family)
    summary = f'**Họ {family}** có **{len(GENUS_SET)}** chi được các cộng đồng sử dụng trong chăm sóc sức khỏe gồm *{String_genus}*. *Họ {family}* đã được một số công động tại các quốc gia như {list_country_family} đã phát hiện một số tác dụng trên lâm sàng gồm chữa bệnh lẫn độc tính như {list_disease_family}.'
    # XỬ LÝ THÀNH PHẦN HÓA HỌC TỪ LOTUS

    # Đọc các file cấu trúc hóa học tải từ lotus dưới dạng json
    
    set_sciences_name = set(remove_invalid_chars(name) for name in filtered_df_Entha_group_family['Sciences_Name'])# Danh sách các loài trong chi
    Name_file_compounds = set([os.path.splitext(f)[0] for f in os.listdir(lotus_database_dir) if f.endswith('.json')])# Danh sách các tên loài trong chi có thể tải về từ lotus
    Information_compound = set_sciences_name.intersection(Name_file_compounds) # dược liệu có thông tin về thành phần hóa học.
    Not_informaiton_compound = set_sciences_name.difference(Name_file_compounds) # dược liệu chưa có thông tin về thành phần hóa học
    # Chỉ sử lý dược liệu có trong danh sách có thành phần hóa học
    if len(Information_compound) == 0 :
        summary_family = f'**Họ {family}** có **{len(GENUS_SET)}** chi được các cộng đồng sử dụng trong chăm sóc sức khỏe gồm *{String_genus}*. *Họ {family}* đã được một số công động tại các quốc gia như {list_country_family} đã phát hiện một số tác dụng trên lâm sàng gồm chữa bệnh lẫn độc tính như {list_disease_family}.'
        caption_image_chemical_structure = f'Chưa cấu trúc hóa học nào được phân lập tự {family}.'
        summary_isolation_compound= f'Chưa có nhiều thông tin về thành phần hóa học của họ này'
    else:
        compounds_df_final= pd.DataFrame(columns=['lotus_id', 'traditional_name', 'chemicalTaxonomyClassyfireClass','smiles', 'name (code)', 'Sci_name'])
        for SC in Information_compound: # bắt dầu duyệt tất cả các loài cho họ, lấy thành phần hóa học, đếm, sau đó tìm core 
            Sci_name = SC
            Sci_name = remove_invalid_chars(Sci_name)
            Name_json_file = f"{Sci_name}.json"
            path_file_json_compound = os.path.join(lotus_database_dir, Name_json_file)
            if os.path.exists(path_file_json_compound):
                with open(path_file_json_compound, 'r', encoding='utf-8') as file:
                    data = json.load(file)   
                compounds_df = pd.DataFrame(data['naturalProducts'])
                if 'smiles' not in compounds_df.columns or compounds_df['smiles'].isnull().all():
                    continue     
                compounds_df['name (code)'] = compounds_df.apply(lambda x: f"{x['traditional_name']} ({x['lotus_id']})", axis=1)
                compounds_df['Sci_name'] = Sci_name      
                compounds_df_final = pd.concat([compounds_df_final, compounds_df], axis=0)
        selected_columns_df = compounds_df_final.loc[:, ['lotus_id', 'traditional_name', 'chemicalTaxonomyClassyfireClass','smiles', 'name (code)', 'Sci_name']]
        Set_chemicalTaxonomyClassyfireClass=set(selected_columns_df['chemicalTaxonomyClassyfireClass'])
        Set_chemicalTaxonomyClassyfireClass = {element for element in Set_chemicalTaxonomyClassyfireClass if element}
        String_chemicalTaxonomyClassyfireClass = ', '.join(Set_chemicalTaxonomyClassyfireClass)
        grouped_selected_columns_df_sci_name = selected_columns_df.groupby('Sci_name').agg(
                smiles_list=('smiles', list),
                smiles_count=('smiles', 'count')
                ).reset_index()
        sorted_grouped_selected_columns_df_sci_name = grouped_selected_columns_df_sci_name.sort_values(by='smiles_count', ascending=False) 
        top_3_sci_name_df = sorted_grouped_selected_columns_df_sci_name.head(3) # Danh sách các dược liệu được các nhà khoa học quan tâm nhất
        top_3_sci_name_list = ', '.join(top_3_sci_name_df['Sci_name'].tolist()) # lấy tên dược liệu quan tâm chuyển sang dạng string
        def number_to_letters(n): # gán các dòng trong bảng theo thứ tự từ A-Z sao cho sau này hình ảnh in ra là theo nhóm.
            result = ''
            while n > 0:
                n -= 1
                result = chr(n % 26 + ord('A')) + result
                n //= 26
            return result   
        grouped_selected_columns_df_chemicalTaxonomyClassyfireClass = selected_columns_df.groupby('chemicalTaxonomyClassyfireClass').agg(
                        smiles_list=('smiles', list),
                        smiles_count=('smiles', 'count')
                    ).reset_index() # tính toán số lượng smiles trong mỗi nhóm
        filtered_grouped_chemicalTaxonomyClassyfireClass = grouped_selected_columns_df_chemicalTaxonomyClassyfireClass[grouped_selected_columns_df_chemicalTaxonomyClassyfireClass['smiles_count'] >= 10] # chọn các nhóm chất có số lượng hoạt chất đã được nghiên cứu lớn hơn 3 trong họ để tìm core   
        def find_core_smiles(smiles_list): # thuật toán tìm core
            mols = [Chem.MolFromSmiles(smiles) for smiles in smiles_list]
            mcs = rdFMCS.FindMCS(mols)
            core_smiles = Chem.MolToSmiles(Chem.MolFromSmarts(mcs.smartsString))
            return core_smiles

        filtered_grouped_chemicalTaxonomyClassyfireClass.loc[:, 'core_smiles'] = filtered_grouped_chemicalTaxonomyClassyfireClass['smiles_list'].apply(find_core_smiles)
        filtered_grouped_chemicalTaxonomyClassyfireClass['Legend'] = [number_to_letters(i + 1) for i in range(len(filtered_grouped_chemicalTaxonomyClassyfireClass))] # Tạo cột mới thể hiện thứ tự của nhóm chất. Mục tiêu đánh thứ tự từ A-Z sau này trong hình ảnh cũng như trong captopm
        smiles_list = filtered_grouped_chemicalTaxonomyClassyfireClass['core_smiles']
        chembl_mols = [Chem.MolFromSmiles(smiles) for smiles in smiles_list if smiles]
        valid_mols = [mol for mol in chembl_mols if mol is not None]
        valid_legends = [legend for mol, legend in zip(chembl_mols, filtered_grouped_chemicalTaxonomyClassyfireClass['Legend'].tolist()) if mol is not None]
        try: 
            sub_img_size = (200, 200)
            img = Draw.MolsToGridImage(valid_mols, legends=valid_legends, molsPerRow=4,subImgSize=sub_img_size,useSVG=True) # Tạo hình ảnh từ danh sách các phân tử và thêm chú thích
            caption = ', '.join(filtered_grouped_chemicalTaxonomyClassyfireClass.apply(lambda x: f"{x['chemicalTaxonomyClassyfireClass']} ({x['Legend']})", axis=1)) # tạo caption của file hình ảnh cấu trúc 
            img_path_chemical_structure = os.path.join(family_dir,'chemical_structure_core.svg') # Lưu hình ảnh
            with open(img_path_chemical_structure, 'w', encoding='utf-8') as f: 
                f.write(img.data)
        except Exception as e:
            print(f"Lỗi: {e}{family}")
                    #### Tổng kết chung về họ 
        summary_family = f'**Họ {family}** có **{len(GENUS_SET)}** chi được các cộng đồng sử dụng trong chăm sóc sức khỏe gồm *{String_genus}*. Số lượng thành phần hóa học đã phân lập và xác định cấu trúc từ họ này tính đến tháng 12 năm 2024 là **{len(set(Set_chemicalTaxonomyClassyfireClass))}** nhóm có thể liệt kê như sau *{String_chemicalTaxonomyClassyfireClass}*. Giữa các loài trong họ này, 3 dược liệu được nghiên cứu nhiều nhất dựa trên số thành phần được phân lập là **{top_3_sci_name_list}*. *Họ {family}* đã được một số công động tại các quốc gia như {list_country_family} đã phát hiện một số tác dụng trên lâm sàng gồm chữa bệnh lẫn độc tính như {list_disease_family}.'
        caption_image_chemical_structure = f' Cấu trúc hóa học của một số khung cơ bản dựa trên thuật toán FMCS để tìm {caption}.'
        summary_isolation_compound= f'Số lượng thành phần hóa học đã phân lập và xác định cấu trúc từ họ này tính đến tháng 12 năm 2024 là {len(set(Set_chemicalTaxonomyClassyfireClass))} nhóm có thể liệt kê như sau {String_chemicalTaxonomyClassyfireClass}. Số lượng các loài đã được nghiên cứu thành phần hóa học là *{len(Information_compound)}* trong tổng số *{len(Information_compound)+len(Not_informaiton_compound)}* loài thuộc họ {family}.Giữa các loài trong họ này, 3 dược liệu được nghiên cứu nhiều nhất dựa trên số thành phần được phân lập là **{top_3_sci_name_list}**. Sử dụng phần mềm RDKIT với thuật toán  Find Maximum Common Substructure (FMCS), các nhóm hoạt chất phổ biến nhất trong *họ {family}* đã xây dựng được nhân. Điều này trong tương lại có thể được sử dụng tìm kiếm mối liên hệ giữa tác dụng của cấu trúc hóa học và tác dụng dược lý. Các nhân trong phần này có thể không giống như cấu trúc gốc của từng nhóm chất. Kết quả được trình bầy như hình dưới đây.'


#### UPDATE CHO FILE index.md và update_index.md
    update_index += f"    - {family}: Dược dân tộc/{family}/{family}.md \n"
    
    index_content += f"""
-   :material-leaf-circle-outline: __{family}__
    
    ---
    
    {summary}
    
    [Họ {family}](Dược dân tộc/{family}/{family}.md)

"""


#### VIẾT MARDOWN PHẦN BAN ĐẦU

    markdown_content = f"""---
title: Các dược liệu thuộc họ {family}
description: Các dược liệu thuộc họ {family}
date: 2024-12-01
categories:
  - Dược dân tộc
  - {family}
tags:
  - Dược dân tộc
{tags_spec}
{tags_genus}
---
!!! abstract "Tóm tắt"

    {summary_family}

!!! info "DrDuke"

    James A. Duke sinh năm 1929-2017 là một nhà thực vật học người Mỹ. Đây là một trong những tác giả hàng đầu trong lĩnh vực dược dân tộc học với cuốn *CRC Handbook of Medicinal Herbs* và chính là người xây dựng lên cơ sở dữ liệu về hợp chất tự nhiên và dược dân tộc học tại Bộ nông nghiệp Hoa Kỳ. Các thông tin được đăng tải tại website [Dr. Duke's Phytochemical and Ethnobotanical Databases](https://phytochem.nal.usda.gov/). 
    Trong suốt thập niên 1970, ông lãnh đạo the Plant Taxonomy Laboratory, Plant Genetics and Germplasm Institute of the Agricultural Research Service, U.S. Department of Agriculture.
    Trong tài liệu này, các thông tin về dược dân tộc của các dược liệu được trích dẫn từ tài liệu của James A. Ducke với sự trợ giúp của phần mềm dịch thuật từ tiếng Anh sang tiếng Việt.
   
## Tổng quan về Họ {family}
### Phân loại thực vật
{Background_taxonomy}

{Tree_life_string}

### Thành phần hóa học 

{summary_isolation_compound}

<figure markdown="span">
    ![{caption_image_chemical_structure}](chemical_structure_core.svg){{ width=100% }}
    <figcaption>{caption_image_chemical_structure}</figcaption>
</figure>


!!! info  "Find Maximum Common Substructure"
    
    Thuật toán FMCS (Find Maximum Common Substructure) là một phương pháp được sử dụng để tìm ra cấu trúc chung nhiều nhất (MCS) trong một tập hợp các cấu trúc hóa học. Các bước của thuật toán gồm:
    - Chọn một cấu trúc hóa học là cấu trúc để tạo truy vấn, còn các cấu trúc khác là mục tiêu.
    - Chia nhỏ cấu trúc để tạo truy vấn thành cấu trúc nhỏ hơn dạng chuỗi SMARTS.
    - Kiểm tra chuỗi SMARTS trong các cấu trúc mục tiêu.
    - Tìm kiếm chuỗi SMARTS xuất hiện nhiều nhất.
    Để biết thêm chi tiết các bạn có thể xem tại [TeachOpenCADD](https://projects.volkamerlab.org/teachopencadd/talktorials/T006_compound_maximum_common_substructures.html)
    ``` python
    pip install rdkit
    def find_core_smiles(smiles_list):
        mols = [Chem.MolFromSmiles(smiles) for smiles in smiles_list]
        mcs = rdFMCS.FindMCS(mols)
        core_smiles = Chem.MolToSmiles(Chem.MolFromSmarts(mcs.smartsString))
        return core_smiles
    ```

### Dược dân tộc học

Họ **{family}** đã được một số công động tại các quốc gia như *{list_country_family}* đã phát hiện một số tác dụng trên lâm sàng gồm chữa bệnh lẫn độc tính như *{list_disease_family}*.

## Chi tiết dược dân tộc học

"""
#### VIẾT MARKDOWN DÀNH CHO CHI VÀ DƯỢC LIỆU TRONG CHI 
    for gen in GENUS_SET:
        filtered_df_Entha_group_genus = filtered_df_Entha_group_family.loc[filtered_df_Entha_group_family['GENUS'] == gen]
        set_spec_in_genus = "\n".join([f"\t - *{genus} {species}*" for genus, species in zip(filtered_df_Entha_group_genus["GENUS"], filtered_df_Entha_group_genus["SPECIES"])])
        markdown_content += f"""
### Chi {gen}

!!! note "Danh sách các loài thuộc chi"
    
*{set_spec_in_genus}*

"""
        for idx, row in filtered_df_Entha_group_genus.iterrows():
            if row['Sciences_Name'] not in Information_compound:
                isolation_compound= f"""
Chưa có nghiên cứu về thành phần hóa học của loài này
"""
            
            else:
                Sci_name = str(row['GENUS'] + " " + row['SPECIES'])
                Sci_name = remove_invalid_chars(Sci_name)
                Name_json_file_lotus = f"{Sci_name}.json"
                path_file_json_compound_sci = os.path.join(lotus_database_dir, Name_json_file_lotus)
                if os.path.exists(path_file_json_compound_sci):
                    with open(path_file_json_compound_sci, 'r', encoding='utf-8') as file:
                        data = json.load(file)   
                    compounds_df = pd.DataFrame(data['naturalProducts'])
                    String_chemicalTaxonomyClassyfireClass = ""
                    String_Set_compount= ""
                    count_comp= 0
                    grouped_compound_markdown=""
                    if 'smiles' not in compounds_df.columns or compounds_df['smiles'].isnull().all():
                        isolation_compound= f"Hiện tại, chưa có thông tin về thành phần hóa học."
                    else:
                        compounds_df['Link_lotus'] = compounds_df.apply(lambda x: f"https://lotus.naturalproducts.net/compound/lotus_id/{x['lotus_id']}", axis=1)
                        compounds_df['name (code)'] = compounds_df.apply(lambda x: f"{x['traditional_name']} [({x['lotus_id']})]({x['Link_lotus']})", axis=1)
                        selected_columns_df = compounds_df.loc[:, ['lotus_id', 'traditional_name', 'synonyms','chemicalTaxonomyClassyfireClass', 'name (code)']]
                        Set_chemicalTaxonomyClassyfireClass=set(selected_columns_df['chemicalTaxonomyClassyfireClass'])
                        Set_chemicalTaxonomyClassyfireClass = {element for element in Set_chemicalTaxonomyClassyfireClass if element}
                        String_chemicalTaxonomyClassyfireClass = ', '.join(Set_chemicalTaxonomyClassyfireClass)
                        Set_compount=set(selected_columns_df['name (code)'])
                        Set_compount = {element for element in Set_compount if element}
                        String_Set_compount = ', '.join(Set_compount)
                        count_comp=len(selected_columns_df)
                        grouped_compound_df = selected_columns_df.groupby('chemicalTaxonomyClassyfireClass').agg( lotus_count=('lotus_id', 'count') ).reset_index()
                        grouped_compound_markdown=grouped_compound_df.to_markdown(index=False) 
                        isolation_compound= f"""
Theo cơ sở dữ liệu lotus, từ loài *{Sci_name}* đã phân lập và xác định được {count_comp} hoạt chất thuộc về các nhóm {String_chemicalTaxonomyClassyfireClass}. Danh sách các hoạt chất như sau {String_Set_compount}.

{grouped_compound_markdown}
"""
            if row['Sciences_Name'] not in Name_file_gibf:
                information_taxo= f""" 
Chưa có thông tin về loài này trên gibf
"""
            else:
                Name_json_file_gibf = f"{Sci_name}.json"
                path_file_json_gibf_sci = os.path.join(GIBF_database_dir, Name_json_file_gibf)
                if os.path.exists(path_file_json_gibf_sci):
                    with open(path_file_json_gibf_sci, 'r', encoding='utf-8') as file:
                        data = json.load(file)        
                taxo_sci_name = data.get('spec', {}) 
                occ_global = data.get('occ_global', 'N/A') 
                stateProvince_in_VN = data.get('stateProvince_in_VN', 'N/A')
                link_image = data.get('link_image', 'N/A')
                image_markdown = "\n".join([f'<img src="{link}" alt="Mô tả hình ảnh" width="100" height="100">' for link in link_image])

            # Chuẩn bị dữ liệu về tên gọi và mô tả đơn giản từ wikidata
            if row['Sciences_Name'] not in Name_file_wikidata:
                infofmation_wiki = f"Chưa có thông tin về loài này trên wikidata."
            else: 
                Name_json_file_wiki = f"{Sci_name}.json"
                path_file_json_wiki_sci = os.path.join(WIKI_database_dir, Name_json_file_wiki)
                if os.path.exists(path_file_json_wiki_sci):
                    with open(path_file_json_wiki_sci, 'r', encoding='utf-8') as file:
                        data = json.load(file)
                if data: 

                    for entry in data:
                        infofmation_wiki= f"""
!!! Thông tin từ wikidata:
    - *Label (VI):* {entry.get('Label (VI)', 'N/A')}
    - *Label (EN):* {entry.get('Label (EN)', 'N/A')}
    - *Tên khoa học:* {entry.get('Scientific Name', 'N/A')}
    - *Descriptions (VI):* {entry.get('Descriptions (VI)', 'N/A')}
    - *Descriptions (EN):* {entry.get('Descriptions (EN)', 'N/A')}
    - *Also Known As (VI):* {', '.join(entry.get('Also Known As (VI)', []))}
    - *Also Known As (EN):* {', '.join(entry.get('Also Known As (EN)', []))}

"""
                        
                else:
                    infofmation_wiki = f"Chưa có thông tin về loài này trên wikidata."

            # Chuẩn bị dữ liệu Dược dân tộc học
            Coutry_enth = ';'.join(row['Country_Enth'])
            pairs = [item.strip() for item in Coutry_enth.split(';')]
            data_Coutry_enth = {'Quốc gia': [], 'Bệnh': []}
            translator = Translator()
            for pair in pairs: 
                Country, Disease = pair.split(':') 
                data_Coutry_enth['Quốc gia'].append(Country.strip()) 
                data_Coutry_enth['Bệnh'].append(Disease.strip())              
            data_Coutry_enth = pd.DataFrame(data_Coutry_enth)
            markdown_table_data_Coutry_enth = data_Coutry_enth.to_markdown(index=False)

            # Chuẩn bị dữ liệu về phân bố trong loài 


            markdown_content += f"""---      
#### *{Sci_name}*
**Thông tin về thực vật**

!!! info "Phân loại thực vật của *{taxo_sci_name.get('species', 'N/A')}* từ GIBF:"
    - **Kingdom:** {taxo_sci_name.get('kingdom', 'N/A')}
    - **Phylum:** {taxo_sci_name.get('phylum', 'N/A')}
    - **Order:** {taxo_sci_name.get('order', 'N/A')}
    - **Family:** {taxo_sci_name.get('family', 'N/A')}
    - **Genus:** {taxo_sci_name.get('genus', 'N/A')}
    - **Species:** *{taxo_sci_name.get('species', 'N/A')}*

{image_markdown} 

{infofmation_wiki}

*Phân bố trên thế giới*: {occ_global}

*Phân bố tại Việt Nam*: {stateProvince_in_VN}

**Thành phần hóa học**
        
{isolation_compound}

**Dược dân tộc học**

Danh sách các quốc gia có sử dụng *{taxo_sci_name.get('species', 'N/A')}* trong điều trị các bệnh. 

{markdown_table_data_Coutry_enth}
\n\n
"""
            
    # Đảm bảo rằng các thư mục của FAMILY tồn tại trước khi tạo file

    
    file_name = f"{family}.md"
    file_path = os.path.join(family_dir, file_name)
    with open(file_path, 'w', encoding='utf-8') as file:
        file.write(markdown_content)
    print(f"Hoàn thành tạo {file_path}")
#### Nội dung cho file index.md đóng file trước khi lưu
index_content += """
</div>
"""
# Ghi nội dung vào tệp index.md
index_file_path = os.path.join(markdocs_DTH_dir, "index.md")
with open(index_file_path, 'w', encoding='utf-8') as file:
    file.write(index_content)
print(f"Hoàn thành tạo {index_file_path}")

# Ghi nội dung vào tệp update_index.yml
update_index_file_path = os.path.join(markdocs_DTH_dir, "update_index.yml")
with open(update_index_file_path, 'w', encoding='utf-8') as file:
    file.write(update_index)
print(f"Hoàn thành tạo {update_index_file_path}")


Số học còn lại: 0
Hoàn thành tạo docs\Markdocs\Dược dân tộc\index.md
Hoàn thành tạo docs\Markdocs\Dược dân tộc\update_index.yml
import os
import pandas as pd
from googletrans import Translator
# Đảm bảo thư mục 'docs' tồn tại
path = "docs"
folder = "Dược dân tộc"

if not os.path.exists(os.path.join(path, folder)):
    os.makedirs(os.path.join(path, folder))
folder_names_duoc_dan_toc = set([name for name in os.listdir(os.path.join(path, folder)) if os.path.isdir(os.path.join(path, folder, name))])
# Tạo DataFrame từ danh sách tên folder
FAMILY_SET = set(df_Entha_group["FAMILY"])
filtered_family_set = sorted(FAMILY_SET - folder_names_duoc_dan_toc)

print('Số học còn lại:', len(filtered_family_set))
first_two_elements = list(filtered_family_set)[:2]
for Family in first_two_elements:
    family_folder = os.path.join(path, folder, Family)
    if not os.path.exists(family_folder):
        os.makedirs(family_folder)
    filtered_df_Entha_group_family = df_Entha_group.loc[df_Entha_group['FAMILY'] == Family]
    tags_spec = "\n".join([f"  - {genus} {species}" for genus, species in zip(filtered_df_Entha_group_family["GENUS"], filtered_df_Entha_group_family["SPECIES"])])
    tags_genus = "\n".join([f"  - {genus}" for genus in set(filtered_df_Entha_group_family["GENUS"])])
    
    list_country_family = set()
    for countries in filtered_df_Entha_group_family["COUNTRY"]:
        if isinstance(countries, set):
            list_country_family.update(countries)
        else:
            list_country_family.add(countries)
    list_country_family = ', '.join(list_country_family)

    list_disease_family = set()
    for disease in filtered_df_Entha_group_family["DEFINITION"]:
        if isinstance(disease, set):
            list_disease_family.update(disease)
        else:
            list_disease_family.add(disease)

            
    list_disease_family = ', '.join(list_disease_family)
    translator = Translator()
    list_disease_family_vi = translator.translate(list_disease_family, dest='vi').text

##### Nội dung cho file family.md
    markdown_content = f"""---
title: Các dược liệu thuộc họ {Family}
description: Họ {Family} gồm khoảng {filtered_df_Entha_group_family["GENUS"].nunique()} chi và {filtered_df_Entha_group_family["SPECIES"].nunique()} loài được một số cộng đồng tại các quốc gia như {list_country_family} sử dụng trong hỗ trợ và điều trị bệnh {list_disease_family_vi}.
date: 2024-12-01
categories:
  - Dược dân tộc
  - {Family}
tags:
  - Dược dân tộc
{tags_spec}
{tags_genus}
---
!!! abstract "Tóm tắt"

    Họ {Family} gồm khoảng {filtered_df_Entha_group_family["GENUS"].nunique()} chi và {filtered_df_Entha_group_family["SPECIES"].nunique()} loài được một số cộng đồng tại các quốc gia như {list_country_family} sử dụng trong một số trường hợp {list_disease_family_vi}.

!!! info "DrDuke"

    James A. Duke sinh năm 1929-2017 là một nhà thực vật học người Mỹ. Đây là một trong những tác giả hàng đầu trong lĩnh vực dược dân tộc học với cuốn *CRC Handbook of Medicinal Herbs* và chính là người xây dựng lên cơ sở dữ liệu về hợp chất tự nhiên và dược dân tộc học tại Bộ nông nghiệp Hoa Kỳ. Các thông tin được đăng tải tại website [Dr. Duke's Phytochemical and Ethnobotanical Databases](https://phytochem.nal.usda.gov/). 
    Trong suốt thập niên 1970, ông lãnh đạo the Plant Taxonomy Laboratory, Plant Genetics and Germplasm Institute of the Agricultural Research Service, U.S. Department of Agriculture.
    Trong tài liệu này, các thông tin về dược dân tộc của các dược liệu được trích dẫn từ tài liệu của James A. Ducke với sự trợ giúp của phần mềm dịch thuật từ tiếng Anh sang tiếng Việt.
   
"""

    GENUS_SET = set(filtered_df_Entha_group_family["GENUS"])
    for genus in GENUS_SET:
        genus_folder = os.path.join(path, folder, Family, genus)
        if not os.path.exists(genus_folder):
            os.makedirs(genus_folder)    
        filtered_df_Entha_group_genus = filtered_df_Entha_group_family.loc[filtered_df_Entha_group_family['GENUS'] == genus]
        set_spec_in_genus = "\n".join([f"\t - *{genus} {species}*" for genus, species in zip(filtered_df_Entha_group_genus["GENUS"], filtered_df_Entha_group_genus["SPECIES"])])

        markdown_content += f"""
# Chi {genus}

??? note "Danh sách các dược liệu thuộc chi"
    
{set_spec_in_genus}

"""
        for idx, row in filtered_df_Entha_group_genus.iterrows():
            try:
                Sci_name = str(row['GENUS'] + " " + row['SPECIES'])
                Sci_name = remove_invalid_chars(Sci_name)
                species_dir = os.path.join(path, folder, Family, genus, Sci_name)
                if not os.path.exists(species_dir):
                    os.makedirs(species_dir)
                # Chuẩn bị dữ liệu Dược dân tộc học
                Coutry_enth = ';'.join(row['Country_Enth'])
                pairs = [item.strip() for item in Coutry_enth.split(';')]
                data_Coutry_enth = {'Country': [], 'Disease': [], 'Bệnh': []}
                translator = Translator()
                for pair in pairs: 
                    Country, Disease = pair.split(':') 
                    data_Coutry_enth['Country'].append(Country.strip()) 
                    data_Coutry_enth['Disease'].append(Disease.strip()) 
                    translated_disease = translator.translate(Disease.strip(), dest='vi').text
                    data_Coutry_enth['Bệnh'].append(translated_disease)                 
                data_Coutry_enth = pd.DataFrame(data_Coutry_enth)
                markdown_table_data_Coutry_enth = data_Coutry_enth.to_markdown(index=False)
                try: 
                    Sci_name_gibf = get_gibf_country(Sci_name) 
                except KeyError as e: 
                    print(f"Lỗi KeyError: {e}. Kiểm tra lại cấu trúc dữ liệu trả về từ hàm get_gibf_country.")
                try:
                    compound_img = get_chemical_structure_2(Sci_name, genus_folder)
                except KeyError as e:
                    print(f"Không thể tạo cấu trúc hóa học: {e}")
                    compound_img = ""
                if compound_img:
                    img_paths = [os.path.relpath(img, family_folder).replace("\\", "/") for img in compound_img[2]]               
                    list_compound = compound_img[1]
                    markdown_table = tabulate(list_compound[['chemicalTaxonomyClassyfireClass', 'smiles_count']], headers='keys', tablefmt='pipe')

                    def get_caption(img_name, df, col1, col2):
                        match = df[df[col1] == img_name]
                        if not match.empty:
                            return match[col2].values[0]
                        return "Không tìm thấy chú thích"
                    chemical_images_2 = "\n".join([f'''
#### Nhóm {os.path.basename(img).split('.')[0]}
<figure markdown="span">
    ![{os.path.basename(img)}]({img}){{ width=100% }}
    <figcaption>Hình ảnh cấu trúc hóa học của {get_caption(os.path.basename(img).split('.')[0], list_compound, 'chemicalTaxonomyClassyfireClass', 'smiles_count')} hoạt chất thuộc nhóm {os.path.basename(img).split('.')[0]} gồm {get_caption(os.path.basename(img).split('.')[0], list_compound, 'chemicalTaxonomyClassyfireClass', 'name (code)')}.</figcaption>
</figure>
'''.strip() for img in img_paths])

                    count_comp = len(compound_img[0])
                    list_comp = set(compound_img[0]['traditional_name'])
                    list_group_comp = ", ".join(filter(None, set(compound_img[0]['chemicalTaxonomyClassyfireClass'])))
                else:
                    count_comp = "Chưa có hoạt chất nào được phân lập."
                    chemical_images_2 = "Không có hình ảnh nào được tạo ra"
                    list_comp = "Chưa có hoạt chất nào được phân lập"
                    list_group_comp = "Không có hoạt chất nào được phân lập"
                    markdown_table = ""

                image_links = get_list_images(Sci_name)
                image_markdown = "\n".join([f'<img src="{link}" alt="Mô tả hình ảnh" width="100" height="100">' for link in image_links[:7]])
                spec = get_gibf(Sci_name)
                df_wikidata = query_wikidata_for_species(Sci_name)

                if 'Item' in df_wikidata.columns:
                    caption_table_df_wikidata = df_wikidata["Item"]
                    data_table_df_wikidata = df_wikidata.drop(columns=['Item'])
                    markdown_table_df_wikidata = data_table_df_wikidata.to_markdown(index=False)
                else:
                    print("Column 'Item' không tồn tại trong DataFrame.")
                markdown_content += f"""---
## {Sci_name}
### Thông tin về thực vật

!!! info "Phân loại thực vật của *{spec.get('species', 'N/A')}* từ GIBF:"
    - **Kingdom:** {spec.get('kingdom', 'N/A')}
    - **Phylum:** {spec.get('phylum', 'N/A')}
    - **Order:** {spec.get('order', 'N/A')}
    - **Family:** {spec.get('family', 'N/A')}
    - **Genus:** {spec.get('genus', 'N/A')}
    - **Species:** *{spec.get('species', 'N/A')}*

{image_markdown} 

![Nguồn thông tin từ wiki](caption_table_df_wikidata)

{markdown_table_df_wikidata}

#### Phân bố trên thế giới

**Từ CSDL GIBF** {Sci_name_gibf[0]}

#### Phân bố tại Việt Nam

**Từ CSDL GIBF**: {Sci_name_gibf[1]}

---
### Thành phần hóa học
        
- Theo cơ sở dữ liệu lotus: Từ loài *{spec.get('species', 'N/A')}* đã phân lập và xác định được {count_comp} hoạt chất thuộc về các nhóm {list_group_comp}. 

{markdown_table}

{chemical_images_2}

---

### Dược dân tộc học

Danh sách các quốc gia có sử dụng *{spec.get('species', 'N/A')}* trong điều trị các bệnh. 

{markdown_table_data_Coutry_enth}
\n
---

"""
            except Exception as e: 
                print(f"Lỗi tại dòng {idx}: {e}") # Tiếp tục vòng lặp với dòng tiếp theo continue    

    # Đảm bảo rằng các thư mục của FAMILY tồn tại trước khi tạo file

    
    file_name = f"{Family}.md"
    file_path = os.path.join(family_folder, file_name)
    with open(file_path, 'w', encoding='utf-8') as file:
        file.write(markdown_content)
    print(f"Hoàn thành tạo {file_path}")

update các file md với nội dung giống nhau

import os

def add_giscus_to_md_files(root_folder, giscus_content):
    """
    Tìm tất cả các tệp .md trong thư mục root_folder và thêm nội dung giscus_content vào cuối mỗi tệp
    :param root_folder: Thư mục gốc để bắt đầu tìm kiếm
    :param giscus_content: Nội dung Giscus cần thêm vào các tệp .md
    """
    for folder_name, subfolders, filenames in os.walk(root_folder):
        for filename in filenames:
            if filename.endswith('.md'):
                file_path = os.path.join(folder_name, filename)
                with open(file_path, 'a', encoding='utf-8') as file:
                    file.write('\n' + giscus_content + '\n')
                print(f"Đã thêm nội dung vào tệp: {file_path}")

# Nội dung Giscus cần thêm vào các tệp .md
giscus_content = """
## Bình luận

<div id="giscus-container"></div>
<script src="https://giscus.app/client.js"
        data-repo="hoangson0787/CSDL-duoc-lieu"
        data-repo-id="R_kgDONbMRNA"
        data-category="Duoc lieu"
        data-category-id="DIC_kwDONbMRNM4ClklR"
        data-mapping="pathname"
        data-strict="0"
        data-reactions-enabled="1"
        data-emit-metadata="1"
        data-input-position="bottom"
        data-theme="light"
        data-lang="en"
        crossorigin="anonymous"
        async>
</script>
"""

# Thư mục gốc chứa các tệp .md
root_folder = '../docs'

# Gọi hàm để thêm nội dung Giscus vào các tệp .md
add_giscus_to_md_files(root_folder, giscus_content)
Đã thêm nội dung vào tệp: ../docs\categories.md
Đã thêm nội dung vào tệp: ../docs\index.md
Đã thêm nội dung vào tệp: ../docs\tags.md
Đã thêm nội dung vào tệp: ../docs\About\AboutMe.md
Đã thêm nội dung vào tệp: ../docs\About\AboutProject.md
Đã thêm nội dung vào tệp: ../docs\blog\index.md
Đã thêm nội dung vào tệp: ../docs\blog\posts\2024-01-12-MKDOCS.md
Đã thêm nội dung vào tệp: ../docs\blog\posts\2024-09-12-Markdown ngon ngu.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\index.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Acanthaceae\Acanthaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Aceraceae\Aceraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Achatocarpaceae\Achatocarpaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Acoraceae\Acoraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Actinidiaceae\Actinidiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Agavaceae\Agavaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Aizoaceae\Aizoaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Alangiaceae\Alangiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Aleniaceae\Aleniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Alismataceae\Alismataceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Aloaceae\Aloaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Amaranthaceae\Amaranthaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Anacardiaceae\Anacardiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Ancistrocladaceae\Ancistrocladaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Annonaceae\Annonaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Apiaceae\Apiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Apocynaceae\Apocynaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Aquifoliaceae\Aquifoliaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Araceae\Araceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Araliaceae\Araliaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Arecaceae\Arecaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\arganiaceae\arganiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Aristolochiaceae\Aristolochiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Asclepiadaceae\Asclepiadaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Asteraceae\Asteraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Balanitaceae\Balanitaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Balanophoraceae\Balanophoraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Balsaminaceae\Balsaminaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Basellaceae\Basellaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Bataceae\Bataceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Begoniaceae\Begoniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Berberidaceae\Berberidaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Betulaceae\Betulaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Bignoniaceae\Bignoniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Bixaceae\Bixaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Blechnaceae\Blechnaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Bombacaceae\Bombacaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Boraginaceae\Boraginaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Brassicaceae\Brassicaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Bromeliaceae\Bromeliaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Burseraceae\Burseraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Buxaceae\Buxaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cabombaceae\Cabombaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cactaceae\Cactaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Calycanthaceae\Calycanthaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Campanulaceae\Campanulaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Canellaceae\Canellaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cannabaceae\Cannabaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cannaceae\Cannaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Capparaceae\Capparaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Caprifoliaceae\Caprifoliaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Caricaceae\Caricaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Caryocaraceae\Caryocaraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Caryophyllaceae\Caryophyllaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Casuarinaceae\Casuarinaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cecropiaceae\Cecropiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Celastraceae\Celastraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Chenopodiaceae\Chenopodiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Chloranthaceae\Chloranthaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Chrysobalanaceae\Chrysobalanaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cistaceae\Cistaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Clusiaceae\Clusiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cneoraceae\Cneoraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Combretaceae\Combretaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Commelinaceae\Commelinaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Connaraceae\Connaraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Convolvulaceae\Convolvulaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Coriariaceae\Coriariaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cornaceae\Cornaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Costaceae\Costaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Crassulaceae\Crassulaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cucurbitaceae\Cucurbitaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cunoniaceae\Cunoniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cupressaceae\Cupressaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cuscutaceae\Cuscutaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cyatheaceae\Cyatheaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cycadaceae\Cycadaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cyperaceae\Cyperaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Cyrillaceae\Cyrillaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Daphniphyllaceae\Daphniphyllaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Datiscaceae\Datiscaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Davalliaceae\Davalliaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Dennstaedtiaceae\Dennstaedtiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Dichapetalaceae\Dichapetalaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Dicksoniaceae\Dicksoniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Dilleniaceae\Dilleniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Dioscoreaceae\Dioscoreaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Dipsacaceae\Dipsacaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Dipterocarpaceae\Dipterocarpaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Droseraceae\Droseraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Dryopteridaceae\Dryopteridaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Ebenaceae\Ebenaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Elaeagnaceae\Elaeagnaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Elaeocarpaceae\Elaeocarpaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Empetraceae\Empetraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Epacridaceae\Epacridaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Ephedraceae\Ephedraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Equisetaceae\Equisetaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Ericaceae\Ericaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Eriocaulaceae\Eriocaulaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Erythroxylaceae\Erythroxylaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Eucommiaceae\Eucommiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Euphorbiaceae\Euphorbiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Fabaceae\Fabaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Fagaceae\Fagaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Flacourtiaceae\Flacourtiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Flagellariaceae\Flagellariaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Fouquieriaceae\Fouquieriaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Frankeniaceae\Frankeniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Garryaceae\Garryaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Gentianaceae\Gentianaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Geraniaceae\Geraniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Gesneriaceae\Gesneriaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Ginkgoaceae\Ginkgoaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Gleicheniaceae\Gleicheniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Globulariaceae\Globulariaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Gnetaceae\Gnetaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Goodeniaceae\Goodeniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Grossulariaceae\Grossulariaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Haemodoraceae\Haemodoraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Hamamelidaceae\Hamamelidaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Hanguanaceae\Hanguanaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Heliconiaceae\Heliconiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Hernandiaceae\Hernandiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Hippocastanaceae\Hippocastanaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Hydrangeaceae\Hydrangeaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Hydrocharitaceae\Hydrocharitaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Hydrophyllaceae\Hydrophyllaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Hymenophyllaceae\Hymenophyllaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Icacinaceae\Icacinaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Illiciaceae\Illiciaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Iridaceae\Iridaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Irvingiaceae\Irvingiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Juglandaceae\Juglandaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Juncaceae\Juncaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Krameriaceae\Krameriaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Lardizabalaceae\Lardizabalaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Lauraceae\Lauraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Lecythidaceae\Lecythidaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Leeaceae\Leeaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Lemnaceae\Lemnaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Lentibulariaceae\Lentibulariaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Liliaceae\Liliaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Linaceae\Linaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Loasaceae\Loasaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Loganiaceae\Loganiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Loranthaceae\Loranthaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Lycopodiaceae\Lycopodiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Lythraceae\Lythraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Magnoliaceae\Magnoliaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Malpighiaceae\Malpighiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Malvaceae\Malvaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Marantaceae\Marantaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Marcgraviaceae\Marcgraviaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Marsileaceae\Marsileaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Melastomataceae\Melastomataceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Meliaceae\Meliaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Melianthaceae\Melianthaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Meniermaceae\Meniermaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Menyanthaceae\Menyanthaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Molluginaceae\Molluginaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Monimiaceae\Monimiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Moraceae\Moraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Moringaceae\Moringaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Musaceae\Musaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Myoporaceae\Myoporaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Myricaceae\Myricaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Myristicaceae\Myristicaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Myrsinaceae\Myrsinaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Myrtaceae\Myrtaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Nelumbonaceae\Nelumbonaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Nyctaginaceae\Nyctaginaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Nymphaeaceae\Nymphaeaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Ochnaceae\Ochnaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Olacaceae\Olacaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Oleaceae\Oleaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Oleandraceae\Oleandraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Onagraceae\Onagraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Ophioglossaceae\Ophioglossaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Opiliaceae\Opiliaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Orchidaceae\Orchidaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Orobanchaceae\Orobanchaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Osmundaceae\Osmundaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Oxalidaceae\Oxalidaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Paeoniaceae\Paeoniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Pandaceae\Pandaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Pandanaceae\Pandanaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Papaveraceae\Papaveraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Passifloraceae\Passifloraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Pedaliaceae\Pedaliaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Phytolaccaceae\Phytolaccaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Picramniaceae\Picramniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Pinaceae\Pinaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Piperaceae\Piperaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Pittooraceae\Pittooraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Plantaginaceae\Plantaginaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Platanaceae\Platanaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Plumbaginaceae\Plumbaginaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Poaceae\Poaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Polemoniaceae\Polemoniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Polygalaceae\Polygalaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Polygonaceae\Polygonaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Polypodiaceae\Polypodiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Pontederiaceae\Pontederiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Portulacaceae\Portulacaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Posidoniaceae\Posidoniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Potamogetonaceae\Potamogetonaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Primulaceae\Primulaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Proteaceae\Proteaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Psilotaceae\Psilotaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Ptaeroxylaceae\Ptaeroxylaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Pteridaceae\Pteridaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Punicaceae\Punicaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Rafflesiaceae\Rafflesiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Ranunculaceae\Ranunculaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Resedaceae\Resedaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Rhamnaceae\Rhamnaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Rhizophoraceae\Rhizophoraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Rosaceae\Rosaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Rubiaceae\Rubiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Rutaceae\Rutaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Salicaceae\Salicaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Salvadoraceae\Salvadoraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Santalaceae\Santalaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Sapindaceae\Sapindaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Sapotaceae\Sapotaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Sargentodoxaceae\Sargentodoxaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Sarraceniaceae\Sarraceniaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Saururaceae\Saururaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Saxifragaceae\Saxifragaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Schisandraceae\Schisandraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Schizaeaceae\Schizaeaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Scrophulariaceae\Scrophulariaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Selaginellaceae\Selaginellaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Simaroubaceae\Simaroubaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Simmondsiaceae\Simmondsiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Smilacaceae\Smilacaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Solanaceae\Solanaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Sonneratiaceae\Sonneratiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Stemonaceae\Stemonaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Sterculiaceae\Sterculiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Strelitziaceae\Strelitziaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Styracaceae\Styracaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Surianaceae\Surianaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Symplocaceae\Symplocaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Taccaceae\Taccaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Tamaricaceae\Tamaricaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Taxaceae\Taxaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Taxodiaceae\Taxodiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Theaceae\Theaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Thelypteridaceae\Thelypteridaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Theophrastaceae\Theophrastaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Thymelaeaceae\Thymelaeaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Tiliaceae\Tiliaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Trapaceae\Trapaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Tropaeolaceae\Tropaeolaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Turneraceae\Turneraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Typhaceae\Typhaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Ulmaceae\Ulmaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Urticaceae\Urticaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Valerianaceae\Valerianaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Verbenaceae\Verbenaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Violaceae\Violaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Viscaceae\Viscaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Vitaceae\Vitaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Vochysiaceae\Vochysiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Winteraceae\Winteraceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Xyridaceae\Xyridaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Zamiaceae\Zamiaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Zingiberaceae\Zingiberaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược dân tộc\Zygophyllaceae\Zygophyllaceae.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\index.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Actisô (Lá)\Actisô (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ba Kích (Rễ)\Ba Kích (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bá Tử Nhân\Bá Tử Nhân.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bách Bệnh (Rễ)\Bách Bệnh (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bách Bộ (Rễ)\Bách Bộ (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bách Hợp (Thân Hành)\Bách Hợp (Thân Hành).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bán Biên Liên (Toàn Cây Phơi Hoặc Sấy Khô)\Bán Biên Liên (Toàn Cây Phơi Hoặc Sấy Khô).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bán Chi Liên (Phơi Hoặc Sấy Khô Toàn Cây)\Bán Chi Liên (Phơi Hoặc Sấy Khô Toàn Cây).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bán Hạ\Bán Hạ.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bán Hạ Nam\Bán Hạ Nam.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bìm Bìm Biếc (Hạt)\Bìm Bìm Biếc (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bình Vôi(Củ)\Bình Vôi(Củ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bạc Hà\Bạc Hà.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bạch Cập (Thân Rễ)\Bạch Cập (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bạch Giới Tử\Bạch Giới Tử.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bạch Hoa Xà Thiệt Thảo (Toàn Cây)\Bạch Hoa Xà Thiệt Thảo (Toàn Cây).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bạch Thược (Rễ)\Bạch Thược (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bạch Truật (Thân Rễ)\Bạch Truật (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bạch Tật Lê (Quả)\Bạch Tật Lê (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bạch Đồng Nữ (Cành Mang Lá)\Bạch Đồng Nữ (Cành Mang Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bối Mẫu\Bối Mẫu.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bồ Bồ (Thân, Cành Mang Lá Và Hoa)\Bồ Bồ (Thân, Cành Mang Lá Và Hoa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bồ Công Anh (Lá, Toàn Cây Trừ Rễ)\Bồ Công Anh (Lá, Toàn Cây Trừ Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bồ Kết (Gai)\Bồ Kết (Gai).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bồ Kết (Quả)\Bồ Kết (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Bổ Cốt Chỉ (Quả)\Bổ Cốt Chỉ (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cam Thảo (Rễ Và Thân Rễ)\Cam Thảo (Rễ Và Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cam Thảo Nam (Toàn Cây)\Cam Thảo Nam (Toàn Cây).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cau (Hạt)\Cau (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cau (Vỏ)\Cau (Vỏ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Chi Tử (Quả)\Chi Tử (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Chiêu Liêu (Vỏ Thân)\Chiêu Liêu (Vỏ Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Chè Dây (Lá)\Chè Dây (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Chè Vằng (Lá)\Chè Vằng (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Chè Đắng (Lá)\Chè Đắng (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Chỉ Xác (Quả)\Chỉ Xác (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cà Gai Leo (Rễ, Thân Lá)\Cà Gai Leo (Rễ, Thân Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cà Độc Dược (Hoa)\Cà Độc Dược (Hoa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cà Độc Dược (Lá)\Cà Độc Dược (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cánh Kiến Trắng (Nhựa)\Cánh Kiến Trắng (Nhựa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cát Cánh (Rễ)\Cát Cánh (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cát Sâm (Rễ)\Cát Sâm (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Câu Kỷ Tử (Quả)\Câu Kỷ Tử (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cây Hoa Súng (Củ Súng)\Cây Hoa Súng (Củ Súng).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cây Kim Ngân (Nụ Hoa)\Cây Kim Ngân (Nụ Hoa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cây Kim Tiền Thảo (Phần Trên Mặt Đất)\Cây Kim Tiền Thảo (Phần Trên Mặt Đất).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cây Ổi (Lá)\Cây Ổi (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cóc Mẳn\Cóc Mẳn.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cúc Gai (Quả)\Cúc Gai (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cúc Hoa Vàng (Cụm Hoa)\Cúc Hoa Vàng (Cụm Hoa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cơm Cháy (Hoa)\Cơm Cháy (Hoa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cơm Cháy (Lá)\Cơm Cháy (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cả Củ (Hạt)\Cả Củ (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cần Tây (Quả)\Cần Tây (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cẩu Tích (Thân Rễ)\Cẩu Tích (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cỏ Cứt Lợn( Cây)\Cỏ Cứt Lợn( Cây).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cỏ Mần Trầu ( Cây )\Cỏ Mần Trầu ( Cây ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cỏ Ngọt (Lá)\Cỏ Ngọt (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cỏ Nhọ Nồi (Phần Cây Trên Mặt Đất)\Cỏ Nhọ Nồi (Phần Cây Trên Mặt Đất).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cỏ Tranh (Thân Rễ)\Cỏ Tranh (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cỏ Xước (Rễ)\Cỏ Xước (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cốc Tinh Thảo\Cốc Tinh Thảo.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Cối Xay (Phần Trên Mặt Đất Đã Phơi, Sấy Khô)\Cối Xay (Phần Trên Mặt Đất Đã Phơi, Sấy Khô).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Diếp Cá\Diếp Cá.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Diệp Hạ Châu (Toàn Cây)\Diệp Hạ Châu (Toàn Cây).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Diệp Hạ Châu Đắng (Toàn Cây)\Diệp Hạ Châu Đắng (Toàn Cây).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Dâm Dương Hoắc\Dâm Dương Hoắc.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Dâu (Cành)\Dâu (Cành).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Dâu (Lá)\Dâu (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Dâu (Quả)\Dâu (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Dâu (Vỏ Rễ)\Dâu (Vỏ Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Dây Thìa Canh (Dây, Lá)\Dây Thìa Canh (Dây, Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Dây Đau Xương (Thân)\Dây Đau Xương (Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Dạ Cầm (Toàn Cây)\Dạ Cầm (Toàn Cây).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Dừa Cạn (Lá)\Dừa Cạn (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Dừa Cạn (Rễ)\Dừa Cạn (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Gai (Rễ)\Gai (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Giảo Cổ Lam\Giảo Cổ Lam.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Gấc (Hạt)\Gấc (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Gấc (Áo Hạt)\Gấc (Áo Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Gừng (Thân Rễ)\Gừng (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hoài Sơn\Hoài Sơn.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hoàng Bá (Vỏ Thân)\Hoàng Bá (Vỏ Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hoàng Cầm (Rễ)\Hoàng Cầm (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hoàng Kỳ (Rễ)\Hoàng Kỳ (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hoàng Liên (Thân Rễ)\Hoàng Liên (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hoàng Nàn (Vỏ Thân, Vỏ Cành)\Hoàng Nàn (Vỏ Thân, Vỏ Cành).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hoàng Tinh (Thân Rễ)\Hoàng Tinh (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hoàng Đằng (Thân Và Rễ)\Hoàng Đằng (Thân Và Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hoắc Hương\Hoắc Hương.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Huyết Giác (Lõi Gỗ)\Huyết Giác (Lõi Gỗ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Huyền Sâm (Rễ)\Huyền Sâm (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hy Thiêm (Bộ Phận Trên Mặt Đất)\Hy Thiêm (Bộ Phận Trên Mặt Đất).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hà Thủ Ô Trắng (Rễ)\Hà Thủ Ô Trắng (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hà Thủ Ô Đỏ (Rễ)\Hà Thủ Ô Đỏ (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hòe (Nụ Hoa)\Hòe (Nụ Hoa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Húng Chanh (Lá)\Húng Chanh (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hương Gia Bì (Vỏ Rễ)\Hương Gia Bì (Vỏ Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hương Nhu Trắng (Đoạn Đầu Cành Có Hoặc Không Có Hoa\Hương Nhu Trắng (Đoạn Đầu Cành Có Hoặc Không Có Hoa.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hương Nhu Tía\Hương Nhu Tía.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hương Phụ (Thân Rễ)\Hương Phụ (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hạ Khô Thảo (Cụm Quả)\Hạ Khô Thảo (Cụm Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hậu Phác (Vỏ)\Hậu Phác (Vỏ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hồ Tiêu (Quả)\Hồ Tiêu (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Hồng Hoa (Hoa)\Hồng Hoa (Hoa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Kha Tử (Quả)\Kha Tử (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Khiếm Thực (Hạt)\Khiếm Thực (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Khoản Đông Hoa (Cụm Hoa Chưa Nở Đã Phơi Sấy Khô)\Khoản Đông Hoa (Cụm Hoa Chưa Nở Đã Phơi Sấy Khô).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Khổ Hạnh Nhân\Khổ Hạnh Nhân.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Kim Anh ( Quả)\Kim Anh ( Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Kim Ngân (Cuộng)\Kim Ngân (Cuộng).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Kim Ngân (Hoa)\Kim Ngân (Hoa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Kinh Giới (Thân Cây Trên Mặt Đất)\Kinh Giới (Thân Cây Trên Mặt Đất).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ké Đầu Ngựa (Quả)\Ké Đầu Ngựa (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Kê Huyết Đằng (Thân)\Kê Huyết Đằng (Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Kê Nội Kim\Kê Nội Kim.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Linh Chi\Linh Chi.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Liên Kiều (Quả)\Liên Kiều (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Long Nha Thảo( Phần Trên Mặt Đất)\Long Nha Thảo( Phần Trên Mặt Đất).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Long Nhãn (Cùi)\Long Nhãn (Cùi).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Long Đởm (Rễ Và Thân Rễ)\Long Đởm (Rễ Và Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Lá Hen (Dùng Lá)\Lá Hen (Dùng Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Lá Lốt (Phần Trên Mặt Đất Tươi Hay Phơi, Sấy Khô)\Lá Lốt (Phần Trên Mặt Đất Tươi Hay Phơi, Sấy Khô).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Lá Móng\Lá Móng.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Lô Hội (Nhựa)\Lô Hội (Nhựa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Lạc Tiên\Lạc Tiên.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ma Hoàng (Bộ Phận Trên Mặt Đất)\Ma Hoàng (Bộ Phận Trên Mặt Đất).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Mâm Xôi (Quả)\Mâm Xôi (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Mã Tiền (Hạt)\Mã Tiền (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Mã Đề (Hạt)\Mã Đề (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Mã Đề (Lá)\Mã Đề (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Măng Cụt (Vỏ Quả)\Măng Cụt (Vỏ Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Mướp Đắng (Quả)\Mướp Đắng (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Mạch Môn (Rễ)\Mạch Môn (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Mạn Kinh Tử (Quả)\Mạn Kinh Tử (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Mộc Hương (Rễ)\Mộc Hương (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Mộc Qua (Quả)\Mộc Qua (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Mộc Tặc (Phần Trên Mặt Đất)\Mộc Tặc (Phần Trên Mặt Đất).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Nga Truật (Thân Rễ)\Nga Truật (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Nghệ (Thân Rễ)\Nghệ (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ngoi (Lá)\Ngoi (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ngành Ngạnh (Lá)\Ngành Ngạnh (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ngũ Gia Bì Chân Chim (Vỏ Thân, Vỏ Cành)\Ngũ Gia Bì Chân Chim (Vỏ Thân, Vỏ Cành).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ngũ Gia Bì Gai (Vỏ Rễ, Vỏ Thân)\Ngũ Gia Bì Gai (Vỏ Rễ, Vỏ Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ngũ Gia Bì Hương (Vỏ Rễ, Vỏ Thân)\Ngũ Gia Bì Hương (Vỏ Rễ, Vỏ Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ngũ Vị Tử ( Quả)\Ngũ Vị Tử ( Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ngải Cứu\Ngải Cứu.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ngọc Trúc (Thân Rễ)\Ngọc Trúc (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Nhàu (Quả)\Nhàu (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Nhàu (Rễ)\Nhàu (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Nhân Sâm (Thân Rễ Và Rễ)\Nhân Sâm (Thân Rễ Và Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Nhân Trần (Thân, Cành, Lá, Hoa)\Nhân Trần (Thân, Cành, Lá, Hoa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Nhân Trần Tía (Thân, Cành, Lá, Hóa)\Nhân Trần Tía (Thân, Cành, Lá, Hóa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Nhục Thung Dung (Thân)\Nhục Thung Dung (Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Nhục Đậu Khấu (Hạt)\Nhục Đậu Khấu (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Náng Hoa Trắng (Lá)\Náng Hoa Trắng (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Nân Nghệ (Thân Rễ)\Nân Nghệ (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Núc Nác (Vỏ Thân)\Núc Nác (Vỏ Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Phòng Kỷ (Rễ)\Phòng Kỷ (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Phòng Phong (Rễ)\Phòng Phong (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Phụ Tử (Rễ Củ Nhánh Đã Phơi Hay Sấy Khô Của Cầy Ô Đầu )\Phụ Tử (Rễ Củ Nhánh Đã Phơi Hay Sấy Khô Của Cầy Ô Đầu ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Qua Lâu (Quả)\Qua Lâu (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Quế (Cành)\Quế (Cành).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Rau Má (Toàn Cây)\Rau Má (Toàn Cây).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Rau Đắng Đất (Toàn Cây)\Rau Đắng Đất (Toàn Cây).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Riềng (Thân Rễ)\Riềng (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Râu Ngô (Râu Ngô)\Râu Ngô (Râu Ngô).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Rẻ Quạt (Thân Rễ)\Rẻ Quạt (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Sa Nhân (Quả)\Sa Nhân (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Sen (Cây Mầm)\Sen (Cây Mầm).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Sen (Hạt)\Sen (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Sen (Lá)\Sen (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Sài Hồ (Rễ)\Sài Hồ (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thanh Bì (Vỏ Quả Xanh)\Thanh Bì (Vỏ Quả Xanh).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thanh Cao Hoa Vàng (Lá)\Thanh Cao Hoa Vàng (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thiên Ma (Thân Rễ)\Thiên Ma (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thiên Môn Đông (Rễ)\Thiên Môn Đông (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thiên Trúc Hoàng\Thiên Trúc Hoàng.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thông Thảo (Lõi Thân)\Thông Thảo (Lõi Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thăng Ma (Thân Rễ)\Thăng Ma (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thương Truật (Thân Rễ)\Thương Truật (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thạch Xương Bồ (Thân Rễ)\Thạch Xương Bồ (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thảo Quyết Minh (Hạt)\Thảo Quyết Minh (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thảo Quả (Quả)\Thảo Quả (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thị Đế\Thị Đế.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thỏ Ty Tử\Thỏ Ty Tử.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thổ Hoàng Liên (Thân Rễ)\Thổ Hoàng Liên (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Thổ Phục Linh (Thân Rễ)\Thổ Phục Linh (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Tiền Hồ (Rễ)\Tiền Hồ (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Tri Mẫu (Thân Rễ)\Tri Mẫu (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Trinh Nữ Hoàng Cung (Lá)\Trinh Nữ Hoàng Cung (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Tràm (Cành Và Lá)\Tràm (Cành Và Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Trạch Tả (Thân Rễ)\Trạch Tả (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Tía Tô (Lá)\Tía Tô (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Tía Tô (Quả)\Tía Tô (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Tía Tô( Thân)\Tía Tô( Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Tô Mộc\Tô Mộc.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Tỏi (Củ)\Tỏi (Củ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Tục Đoạn (Rễ)\Tục Đoạn (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Tỳ Giải (Thân Rễ)\Tỳ Giải (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Uy Linh Tiên (Rễ Và Thân Rễ)\Uy Linh Tiên (Rễ Và Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Viễn Chí (Rễ)\Viễn Chí (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Vàng Đắng (Thân)\Vàng Đắng (Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Vông Nem ( Lá)\Vông Nem ( Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Vọng Cách (Lá)\Vọng Cách (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Vối ( Nụ Hoa )\Vối ( Nụ Hoa ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Vối (Lá)\Vối (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Vừng Đen (Hạt)\Vừng Đen (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Xuyên Khung (Thân Rễ)\Xuyên Khung (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Xuyên Tiêu (Quả)\Xuyên Tiêu (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Xuyên Tâm Liên\Xuyên Tâm Liên.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Xà Sàng (Quả)\Xà Sàng (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Xích Thược (Rễ)\Xích Thược (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Xích Đồng Nam (Rễ)\Xích Đồng Nam (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Xương Bồ\Xương Bồ.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ích Mẫu (Phần Trên Mặt Đất)\Ích Mẫu (Phần Trên Mặt Đất).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ích Trí (Quả)\Ích Trí (Quả).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ô Dược (Rễ)\Ô Dược (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Ô Đầu (Rễ Củ)\Ô Đầu (Rễ Củ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đan Sâm (Rễ Và Thân Rễ)\Đan Sâm (Rễ Và Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đào (Hạt)\Đào (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đăng Tâm Thảo (Ruột Thân)\Đăng Tâm Thảo (Ruột Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đơn Kim (Lá)\Đơn Kim (Lá).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đơn Lá Đỏ\Đơn Lá Đỏ.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đương Quy (Rễ)\Đương Quy (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đại (Hoa)\Đại (Hoa).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đại Hoàng (Thân Rễ)\Đại Hoàng (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đảng Sâm (Rễ)\Đảng Sâm (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đảng Sâm Việt Nam (Rễ)\Đảng Sâm Việt Nam (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đảng Sâm Việt Nam Chế\Đảng Sâm Việt Nam Chế.md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đậu Ván Trắng (Hạt)\Đậu Ván Trắng (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đậu Xanh (Hạt)\Đậu Xanh (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đậu Đen (Hạt)\Đậu Đen (Hạt).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Địa Cốt Bì (Vỏ Rễ)\Địa Cốt Bì (Vỏ Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Địa Du (Rễ)\Địa Du (Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Địa Liền (Thân Rễ)\Địa Liền (Thân Rễ).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Đỗ Trọng (Vỏ Thân)\Đỗ Trọng (Vỏ Thân).md
Đã thêm nội dung vào tệp: ../docs\Dược liệu\Độc Hoạt (Rễ)\Độc Hoạt (Rễ).md
for i in range(50, 315):
    slide_name = f'Slide{i}.SVG'
    print(f'## {{background-color="white" background-image="../VTM/Images/FuZang/{slide_name}" background-size="80%" background-position="center"}}')
## {background-color="white" background-image="../VTM/Images/FuZang/Slide50.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide51.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide52.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide53.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide54.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide55.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide56.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide57.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide58.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide59.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide60.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide61.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide62.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide63.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide64.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide65.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide66.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide67.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide68.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide69.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide70.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide71.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide72.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide73.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide74.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide75.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide76.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide77.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide78.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide79.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide80.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide81.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide82.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide83.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide84.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide85.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide86.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide87.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide88.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide89.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide90.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide91.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide92.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide93.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide94.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide95.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide96.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide97.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide98.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide99.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide100.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide101.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide102.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide103.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide104.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide105.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide106.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide107.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide108.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide109.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide110.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide111.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide112.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide113.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide114.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide115.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide116.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide117.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide118.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide119.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide120.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide121.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide122.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide123.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide124.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide125.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide126.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide127.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide128.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide129.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide130.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide131.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide132.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide133.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide134.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide135.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide136.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide137.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide138.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide139.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide140.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide141.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide142.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide143.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide144.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide145.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide146.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide147.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide148.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide149.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide150.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide151.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide152.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide153.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide154.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide155.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide156.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide157.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide158.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide159.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide160.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide161.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide162.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide163.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide164.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide165.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide166.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide167.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide168.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide169.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide170.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide171.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide172.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide173.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide174.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide175.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide176.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide177.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide178.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide179.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide180.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide181.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide182.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide183.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide184.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide185.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide186.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide187.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide188.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide189.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide190.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide191.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide192.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide193.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide194.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide195.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide196.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide197.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide198.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide199.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide200.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide201.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide202.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide203.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide204.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide205.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide206.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide207.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide208.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide209.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide210.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide211.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide212.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide213.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide214.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide215.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide216.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide217.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide218.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide219.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide220.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide221.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide222.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide223.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide224.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide225.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide226.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide227.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide228.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide229.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide230.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide231.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide232.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide233.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide234.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide235.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide236.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide237.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide238.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide239.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide240.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide241.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide242.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide243.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide244.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide245.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide246.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide247.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide248.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide249.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide250.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide251.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide252.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide253.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide254.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide255.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide256.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide257.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide258.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide259.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide260.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide261.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide262.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide263.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide264.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide265.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide266.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide267.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide268.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide269.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide270.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide271.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide272.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide273.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide274.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide275.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide276.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide277.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide278.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide279.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide280.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide281.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide282.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide283.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide284.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide285.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide286.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide287.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide288.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide289.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide290.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide291.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide292.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide293.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide294.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide295.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide296.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide297.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide298.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide299.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide300.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide301.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide302.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide303.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide304.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide305.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide306.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide307.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide308.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide309.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide310.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide311.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide312.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide313.SVG" background-size="80%" background-position="center"}
## {background-color="white" background-image="../VTM/Images/FuZang/Slide314.SVG" background-size="80%" background-position="center"}
# import module
from pdf2image import convert_from_path


# Store Pdf with convert_from_path function
path_pdf = r"E:\Documents\Lecture in University\DHQG\DHQG-Duoc co truyen\New folder\Part_A_Ly_luan_YHCT.pdf"
images = convert_from_path(path_pdf)

for i in range(len(images)):
      # Save pages as images in the pdf
    images[i].save('page'+ str(i) +'.jpg', 'JPEG')